为什么不从1开始索引数组?为什么数组索引从0开始?
答案 0 :(得分:2)
基本上是因为数组实际构建在内存中的方式。 您的变量指向数组的开头和"索引"实际上是一个偏移量,它是地址算术的语法糖。
所以基本上你有第一个内存位置,你移动n个元素来获取你正在寻找的元素。
更多信息: http://see.stanford.edu/materials/icsppcs107/07-Arrays-The-Full-Story.pdf
请注意,并非所有语言的情况都是如此,但由于索引表示法与大多数实现中的地址添加之间的联系,零索引方法非常常见。
答案 1 :(得分:0)
实际上,数组var是指向基址的指针。假设int arr [5]是在内存{a,b,c,d,e}中分配的数组
元素 - > MemoryLocation
a - > 1000
b - > 1002
c - > 1004
d - > 1006
e - > 1008
这里arr充当指针并保存地址1000
arr [0]表示arr + 2 * 0 = 1000(2表示数据类型的大小,在本例中为int,int size为2B)
arr [1]表示arr + 2 * 1 = 1000 + 2 = 1002
arr [2]表示arr + 2 * 2 = 1000 + 2 = 1004
arr [3]表示arr + 2 * 3 = 1000 + 2 = 1006
arr [4]表示arr + 2 * 4 = 1000 + 2 = 1008
因为这个数组索引从零开始。