数组下标为什么从0开始

从数组存储的内存模型上来看,“下标”最确切的定义应该是“偏移(offset)”。
如果用array来表示数组的首地址,array[0]就是偏移为0的位置(即首地址),array[k]就表示偏移k个type_size的位置,计算array[k]的内存地址:

array[k]_address = base_address + k * type_size

但如果下标从1开始,那么计算array[k]的内存地址会变成:

array[k]_address = base_address + (k-1) * type_size

对比两个公式,如果下标从1开始,那么CPU就会多一次减法指令,会消耗性能,浪费资源。

另一方面也是历史原因,因为c语言设计者使用0作为数组的下标,以后的高级语言也沿用了这一设计。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值