Еще несколько аргументов, почему массивы основаны на нуле, можно найти здесь . Infact его одна из очень важных и хороших особенностей языка программирования C. Тем не менее, вы можете реализовать массив и начать индексирование с 1, но это действительно займет много усилий, чтобы отследить.
Скажем, вы объявляете целочисленный массив
int a[10];
for(i=1;i<10;i++)
a[i]=i*i;
Вам необходимо получить доступ ко всем массивам с индексом 1. Конечно, вы должны объявить с размером (REQUIRED_SIZE_NORMALLY+1)
.
Здесь вы также должны отметить, что вы все еще можете получить доступ к элементу a[0]
, но вы должны игнорировать его из своей головы и своего кода, чтобы достичь того, чего вы хотите.
Еще одна проблема - для человека, читающего ваш код. Он сходил с ума, пытаясь выяснить, почему нумерация начиналась с 1, а 0-й индекс использовался для какой-то скрытой цели, о которой, к сожалению, он не знает.