为什么数组的第一个索引以0开头
最佳答案
因为索引实际上意味着与指针的偏移量。第一个元素的偏移量为0。
评论更新好吧,我会尝试的。
让我们考虑一个包含10个元素的字节数组:
byte array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
考虑此数组所在的存储单元(假设它从地址0010h开始):
0010 0011 0012 0013 0014 0015 0016 0017 0018 0019
+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
我们的变量
array
指向0010h
。1
(第一个元素)的偏移量是0
,其实际地址是0010 + 0
(其中0010
是array
的地址,而0
是偏移量)。3
(第三个元素)的偏移量是2
,因为它在第三个单元格中,并且单元格大小是1
(因为我们有字节数组)。第三个元素的实际地址是0010 + 2
。回到我们的编程语言:
array[0]
表示具有0010
地址的存储单元的内容,array[1]
表示具有0010 + 1
地址(第二个元素)的存储单元的内容,依此类推。 C语言中的*array
引用第一个元素,*(array+1)
-引用第二个元素。