Массивы - это объекты сами по себе, а не указатели.Рассмотрим более простой объект:
int a = 0;
Ожидаете ли вы, что сможете изменить его адрес?Конечно, нет.Объект - это область хранения с типом.Регион хранения идентифицируется по его адресу, поэтому вы не будете ожидать его изменения.И массивы тоже объекты.Когда вы объявляете
int b[8] = {0};
, вы объявляете объект размером восемь целых, который будет занимать некоторое пространство.Вы не можете изменить его адрес больше, чем можете изменить адрес любого единственного целого.
Возможно, вам сказали, что массивы являются указателями.Но они не!Они могут быть преобразованы, даже неявно, в указатель чаще, чем нет, но они по-прежнему являются объектными типами.Указатели часто заменяют массивы, потому что адрес первого элемента достаточен для достижения любого другого элемента с арифметикой указателя, но указатель не является самим объектом массива.Разница становится очевидной, когда вы проверяете их свойства объекта.Например:
sizeof(b) != sizeof(int*)
Объект b
не является размером указателя, на самом деле это размер 8 целых чисел, вероятно, больше, чем указатель.