2020-06-06

数组下标从0的开始而不是从1开始?

数组(Array)是一种线性表数据结构,用一组连续的内存空间,存储一组相同类型的数据
线性表,每个线性表上最多有前后两个方向。下面我们大概总结几点:
(1)历史原因方面由于语言出现顺序从早到晚C、Java。C语言数组下标是从0开始->Java也是,降低额外的学习和理解成本。
(2)减少CPU指令运算方面:
1>:数组寻址-----arr[i] = base_address + i * type_size(1)
其中base_address为数组arr首地址,arr[0]就是偏移量为0的数组,即数组arr首地址;i为偏移量,type_size为数组类型字节数,比如int为32位,即4个字节。
2>
:数组寻址----arr[i] = base_address + (i -1)* type_size(2)**
比较两个计算公式可以发现公式(2)每次CPU寻址需要多一次 i-1的操作,即多了一次减法的指令运算。
对于数组这种基础数据结构,无论在哪种高级程序语言中,都是频繁间接(作为容器的基础数据结构,比如Java的ArrayList)或者直接被使用的,因此要尽量减少其消耗CPU资源。*
(3)物理内存的地址都是从0开始,计算机主存是多个连续字节大小的单元组组成,每个字节都对应唯一的物理地址,且第一个字节的地址为0.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值