为什么数组从0开始

数组变量可以用作指针,这个指针指向数组的第一个元素,也就是说除了方括号表示法,还可以用*运算符读取数组的第一个元素,像这样:

为什么数组从0开始 - 图1

地址只是一个数字,所以可以进行指针算术运算,比如为了找到存储器中的下一个地址,可以增加指针的值。既可以用方括号加上索引值2来读取元素,也可以对第一个元素的地址加2:

  1. printf("第三单: %i 杯\n", drinks[2]);
  2. printf("第三单: %i 杯\n", *(drinks + 2));

为什么数组从0开始 - 图2

总之,表达式drinks[i]*(drinks + i)是等价的,这解释了为什么数组要从索引0开始,所谓索引,其实就是为了找到元素的地址单元,指针需要加上的那个数字。

为什么数组从0开始 - 图3磨笔上阵

使用指针算术运算的魔力修复一颗破碎的心,下面这个函数将跳过文本消息的前六个字符。

为什么数组从0开始 - 图4

 

为什么数组从0开始 - 图5磨笔上阵解答

你用指针算术运算的魔力修复了一颗破碎的心,下面这个函数跳过了文本消息的前六个字符。

为什么数组从0开始 - 图6

为什么数组从0开始 - 图7