Почему индексация начинается с нуля в 'C'? - PullRequest
144 голосов
/ 06 сентября 2011

Почему индексация в массиве начинается с нуля в C, а не с 1?

Ответы [ 12 ]

1 голос
/ 06 сентября 2011

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

0 голосов
/ 03 августа 2015

Имя массива - это постоянный указатель, указывающий на базовый адрес. Когда вы используете arr [i], компилятор обрабатывает его как * (arr + i). Поскольку диапазон int равен от -128 до 127, компилятор считает, что от -128 до-1 - отрицательные числа и от 0 до 128 - положительные числа. Поэтому индекс массива всегда начинается с нуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...