【发布时间】:2013-05-29 09:00:04
【问题描述】:
我有一个关于 C/C++ 数组的问题。
为什么数组的索引从“0”开始而不是从“1”开始?
这有什么数学上的原因吗?
【问题讨论】:
-
这是 Programmers SE 上 Why are structs/arrays zero based? 的副本。
-
@ring0:感谢您的帖子,我会在发布之前进行更好的搜索。还是谢谢。
我有一个关于 C/C++ 数组的问题。
为什么数组的索引从“0”开始而不是从“1”开始?
这有什么数学上的原因吗?
【问题讨论】:
在大多数编程语言中,任何数组的名称都是一个指针,它只不过是对内存位置的引用,因此表达式 array[n] 指向一个距离第一个元素 n 个元素的内存位置元素。这意味着索引被用作偏移量。数组的第一个元素正好包含在数组指向的内存位置(0 个元素之外),所以它应该总是被称为数组[0]。
a[i] 也可以读取为 [a+i] 处的值,表示为 *(a+i) ,因此它始终从零开始。
【讨论】: