为什么数组索引从'0'开始?

3

我对C/C++数组有一个问题。

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

这样做是否有数学上的原因呢?


3
这是“程序员问答”中的一个重复问题:“为什么结构体/数组以零为基础?” - mouviciel
@ring0:感谢您的帖子,我应该在发帖之前做更好的搜索。不管怎样还是谢谢。 - user1814023
1个回答

29
在大多数编程语言中,任何数组的名称都是一个指针,它只是指向一个内存位置的引用,因此表达式array[n]指向一个距离第一个元素n个元素的内存位置。这意味着索引被用作偏移量。数组的第一个元素恰好包含在数组指向的内存位置中(0个元素距离),因此应始终将其称为array[0]。
a[i]也可以被解读为[a+i]处的值,表示为*(a+i),因此它始终从零开始。

1
哇,Vivek,你的解释真是太棒了! - UnderGround

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接