Здравствуйте, rg45, Вы писали:
R>операция индексирования применима не только к массивам, но и указателям. Ведь, согласно стандарту, операция индексирования — это просто комбинация опраций сложения указателя и числа с последующим разыменованием. *(p + i), *(i + p), p[i], i[p]
— все это равнозначные выражения и индекс вполне может быть отрицательным.
Индекс массива в C/C++ не может быть отрицательным — это следует из определения массива.

То, что подобные операции могут приводить к отрицательным смещениям, ничем не отличается от технической возможности обратиться к элементу с очень большим индексом, чтобы за счет переполнения попасть раньше начала массива. Тут просто нужно различать техническую возможность получить какой-то результат, и смысл применямой операции.