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

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




免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM