Да, то, что сказал ваш профессор, правильно.
для подробного объяснения
Рассмотрим ваш массив,
int array[5]
здесь требуется 5 позиций в памяти, скажем 0x00 0x04 0x08 0x0C и 0x10 0x14
Предполагается, что целое число занимает 4 байта, местоположения на расстоянии 4 байта.
в этом случае «массив» представляет базовый адрес (указатель) на массив, то есть 0x00.И типом будет int *.(поскольку тип элементов массива целочисленный)
Если вы сделаете массив + 1, он будет 0x04, поскольку приращение указателя зависит от типа указателя.Если указатель целочисленный, он будет увеличиваться на 4 байта.Если тип целого числа символьный, указатель будет увеличиваться на один байт.
поэтому, если вы сделаете (массив + 5), он будет указывать на адрес 0x14, а
*(array+5)
возвращает значение местоположения 0x14, которое является значением в 5-м расположении массива.
, поэтому на практике массив [5] равен * (массив + 5)
Компилятор внутренне преобразует массив [5] в * (массив + 5)
, поэтомудаже если мы напишем 5 [массив], он будет преобразован в * (5 + массив)
Хотя это кажется странным, поэтому 5 [массив] работает так же, как массив [5]