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

目录

一 数组寻址公式

二 数组模型表示

三 数组寻址计算


一 数组寻址公式

a[i]_address = base_address + i * data_type_size

data_type_size 是数组中每一个元素大小。

二 数组模型表示

以 int[] a = new int[10] 为例。计算机给数组 a[10],分配了一块连续内存空间 2000~2039,内存块的首地址为 base_address = 2000。

三 数组寻址计算

假设数组从0开始,计算第9个元素公式是:a[9]_address = 2000 + 9 * 4 = 2036;

假设数组从1开始,计算第9个元素公式是:a[9]_address = 2000 + (10-1) * 4 = 2036

对比:数组从1开始相当于每次随机访问数组元素都多了一次减法运算,对于 CPU 来说,就是多了一次减法指令。数组作为非常基础的数据结构,通过下标随机访问数组元素又是其非常基础的编程操作,效率的优化就要尽可能做到极致。

结论:为了减少一次减法操作,数组选择了从 0 开始编号,而不是从 1 开始。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值