假如数组的首地址 是 base_address
如果索引从 1 开始计,元素 a[1] 是第一个元素,它的地址就是 base_address,当我们要获取第 8 个元素 a[8] 的数据时,计算机就要找到元素 a[8] 所在的地址,计算公式就是 base_address + (8-1)* type_size 。
如果索引从 0 开始计,元素 a[0] 是第一个元素,它的地址就是 base_address,当我们要获取第 8 个元素 a[7] 的数据时,计算机就要找到元素 a[7] 所在的地址,计算公式就是 base_address + 7 * type_size 。
我们发现,索引从 0 开始,寻址时会少做一次减法,这就是一个优化,别小看这种优化,计算的数量一旦上去,比如上亿次计算,那积累起来的优势是相当可观的。
其实,各种算法的优化,本质都是一样的,让计算机做更少的计算,只有做的事情少了,效率才会提高。