为什么数组第一个索引从0开始
最佳答案
因为index其实就是指针的偏移量。第一个元素的偏移量为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
是数组
的地址,0
是偏移量)。
3
(第三个元素)的偏移量为2
,因为它在第三个单元格中,单元格大小为1
(因为我们有字节数组)。第三个元素的实际地址是 0010 + 2
。
回到我们的编程语言:array[0]
表示具有0010
地址的存储单元的内容,array[1]
表示0010 + 1
地址(第二个元素)的内存单元的内容,依此类推。 C 中的 *array
指的是第一个元素,*(array+1)
- 指的是第二个元素。
关于c - c语言数组索引相关问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4355170/