Что подразумевается под этим, может быть несколько вещей:
1) оператор индекса определяется в терминах арифметики указателей. C99 6.5.2.1/2 «Подписка на массив» говорит:
Определение оператора нижнего индекса [] состоит в том, что E1 [E2] идентичен (* ((E1) + (E2))).
В качестве примера предположим, что у вас есть массив, отклоненный следующим образом: char s[] = "012345";
Все следующие значения оцениваются как «4»:
s[4]
*(s + 4)
4[s]
- это
необычная конструкция может вас удивить,
но из-за того, что
подписка определяется
стандарт, это эквивалентно *(4 +
s)
, что совпадает с *(s + 4)
и так же, как s[4]
.
2) (тесно связано с вышеизложенным) имена массивов в большинстве выражений приводятся к указателям на первый элемент массива (операндом для операции sizeof
является главное исключение).