为什么数组的第一个索引以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(其中0010array的地址,而0是偏移量)。
3(第三个元素)的偏移量是2,因为它在第三个单元格中,并且单元格大小是1(因为我们有字节数组)。第三个元素的实际地址是0010 + 2

回到我们的编程语言:array[0]表示具有0010地址的存储单元的内容,array[1]表示具有0010 + 1地址(第二个元素)的存储单元的内容,依此类推。 C语言中的*array引用第一个元素,*(array+1)-引用第二个元素。

10-04 13:37