为什么数组的下标都是从0开始而不是1?

假如数组的首地址 是 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 开始,寻址时会少做一次减法,这就是一个优化,别小看这种优化,计算的数量一旦上去,比如上亿次计算,那积累起来的优势是相当可观的。

其实,各种算法的优化,本质都是一样的,让计算机做更少的计算,只有做的事情少了,效率才会提高。



posted @ 2019-10-31 09:00  落霞与孤鹜齐飞!  阅读(953)  评论(0编辑  收藏  举报