Why does the indexing in an array start with zero in C and not with 1?
Because 0-based index allows...
array[index]
...to be implemented as...
*(array + index)
If index were 1-based, compiler would need to generate: *(array + index - 1), and this "-1" would hurt the performance.
*(array + index - 1)