SVZ>К ранеесказанному добавлю ещё один кейс. SVZ>Индекс в массиве это полноценная сущность БД. Используется вместо указателей. SVZ>В этом случае отрицательные значения используются для обозначения невалидных объектов (у нас это -1) и для каких-нибудь специальных констант.
Если вынести за скобки вопросы стиля и дизайна, то операция индексирования применима не только к массивам, но и указателям. Ведь, согласно стандарту, операция индексирования — это просто комбинация опраций сложения указателя и числа с последующим разыменованием. *(p + i), *(i + p), p[i], i[p] — все это равнозначные выражения и индекс вполне может быть отрицательным.