因为索引实际上意味着指针的偏移量.第一个元素的偏移量为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 |
+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
我们的变量数组指向0010h.
偏移量1(第一个元素)为0,其实际地址为0010 0(其中0010是数组的地址,0是偏移量).
3(第三个元素)的偏移量是2,因为它在第三个单元格中,并且单元格大小为1(因为我们有字节数组).第3个元素的实际地址是0010 2.
回到我们的编程语言:array [0]表示具有0010地址的存储单元的内容,array [1]表示具有0010 1地址(第二元素)的存储单元的内容,依此类推. * C中的数组指的是第一个元素*(数组1) – 指的是第二个元素.