为什么数组索引从’0’开始

我对C / C ++数组有疑问。

为什么数组的索引从’0’开始而不是从’1’开始?

这有什么数学原因吗?

在大多数编程语言中,任何数组的名称都是一个指针,它只是对内存位置的引用,因此表达式array [n]指向一个远离第一个元素的n元素的内存位置。 这意味着索引用作偏移量。 数组的第一个元素完全包含在数组指向的内存位置(0个元素之外),因此应始终将其称为array [0]。

a [i]也可以读作[a + i]处的值,表示为*(a + i),因此它始终从零开始。