¿Cuál es la historia detrás de la indexación de matriz basada en cero?

Todas las variables utilizadas en los programas son ubicaciones en la memoria. Cuando declaramos una matriz ‘arr’ de algunas X (digamos 10) int’s

int arr [10] ; // C / C ++

Aquí estamos necesariamente asignando 10 * sizeof (int) bytes contiguos de memoria y la dirección base, es decir, la dirección inicial del fragmento de memoria se almacena en arr. Cuando queremos acceder a los elementos de la matriz de forma individual, lo hacemos indexando en el elemento de la matriz correspondiente mediante arr [i], que hace lo siguiente

obtener el valor entero ubicado en arr + i * sizeof (int) th ubicación

Para acceder al primer valor que se encuentra en la dirección base, es decir, en arr Necesitamos que especifique el índice por arr [0] que se traduce en arr + 0 * sizeof (int) que da el valor de arr (dirección base) que a su vez busca el primer elemento de la matriz.

Esto es lo que creo que es la razón de la indexación basada en cero.

Vea estas respuestas ¿Deberían los índices de matriz comenzar en 0 o 1?