概述
也不是所有的高级程序语言都是如此,比如Python数组下标就支持负数。
原因一:历史原因
语言出现顺序从早到晚C、Java、JavaScript。
C语言数组下标是从0开始->Java也是->JavaScript也是。
降低额外的学习和理解成本。
原因二:减少CPU指令运算
(1)下标从0开始:
数组寻址——arr[i] = base_address + i * type_size --公式(1)
其中base_address为数组arr首地址,arr[0]就是偏移量为0的数组,即数组arr首地址;i为偏移量,type_size为数组类型字节数,比如int为32位,即4个字节。
(2)下标从1开始:
数组寻址——arr[i] = base_address + (i -1)* type_size --公式(2)
比较两个计算公式可以发现公式(2)每次CPU寻址需要多一次 i-1
的操作,即多了一次减法的指令运算。
对于数组这种基础数据结构,无论在哪种高级程序语言中,都是频繁间接(作为容器的基础数据结构,比如Java的ArrayList)或者直接被使用的,因此要尽量减少其消耗CPU资源。
原因三:物理内存的地址是从0开始的
计算机主存被抽象成由多个连续字节大小的单元组成的数组(逻辑地址),每个字节都对应唯一的物理地址,第一个字节的地址为0。
原因四:计算机组成原理
无论是二进制还是十进制,都要表示数字1,只有N(N进制)的0次方才能产生数字1。
最后
以上就是娇气灯泡为你收集整理的为什么数组下标是从0开始?可能原因的全部内容,希望文章能够帮你解决为什么数组下标是从0开始?可能原因所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复