Добрый день, я чего-то не могу понять, совсем.
есть функция:
void shift(int a[], unsigned size, int shift) {
for (int j = 0; j < shift; j++) {
int tmp = a[size - 1];
for (int i = 0; i < size; i++) {
int current = a[i];
a[i] = tmp;
tmp = current;
}
}
}
Она сдвигает циклично массив, то есть:
int a[5] = {1, 2, 3, 4, 5};
unsigned size = 5; // просто чтобы было удобно показать здесь.
shift(a, size, 2); // в жизни я не передаю размер массива абсолютным значением
В итоге, переданный массив изменяется, не его копия, а сам массив, почему?
Я догадываюсь что дело в том, что массив - не просто переменная, а объект, и когда мы его передаем в функцию, мы передаем не его копию, а ссылку на объект, даже когда не используем указатели, я прав?