数据结构——为什么数组的下标是从0开始,而不是从1开始

数组是一种线性表数据结构,在内存中使用了一段连续的内存空间。

计算机会给每个内存单元分配一个地址,计算机通过地址来访问内存中的数据。当计算机需要随机访问数组中的某个元素时,通过下面的寻址公式,计算出该元素存储的内存地址:

// 计算下标为 i 的元素的内存地址公式如下
// baseAddress为a[0]的地址
// dataSize由数组存储的数据类型决定,例如存储的为int类型就是4个字节
targetAdress = baseAddress + i * dataSize

如果数组的下标是从1开始,那么寻址公式就会变成

targetAdress = baseAddress + (i - 1) * dataSize

结论
对比两个公式我们可以发现,差别其实并不大,只是多了一次 i-1 的减法运算。但是对于CPU而言就是多了一次减法指令,数组作为非常基础的数据结构,对于效率的优化就要尽可能做到极致,所以在追求极致时,能减少一次减法操作肯定是更好的选择

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值