您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
为什么有些编程语言的数组要从零开始算?
下标,元素,数组为什么有些编程语言的数组要从零开始算?
发布时间:2020-12-06加入收藏来源:互联网点击:
问题补充: 像C语言的数组,Python的List都是从零开始记数。
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
目前大多数编程语言的数组下标都是从0开始计算的,这可能不符合人们从正整数开始计数的习惯, 不过计算机世界里从0开始计数有它的历史原因……
什么是数组
数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式。下图表示了一个长度为10的一维数组在内存中的存储状态。很明显,如果需要访问一个数组的某一个元素,我们通常需要知道它的下标/索引(indice)。如何访问数组元素
可以简单理解为,访问数组元素实际上是读取某个内存地址的值。从上图可以看到,数组在内存中是连续的,每个元素占用了同样大小的空间,这样,我们只需要知道数组第1个元素的内存地址,通过加上相应的偏移量,就能拿到某个数组元素的内存地址。先看看如果第1个元素下标是1怎样定位其它元素:我们假设第1个元素的地址(首地址)为a,每个数组元素的大小为s,那么第2个元素下标为2,地址=a + (2-1)*s,第3个元素下标为3,地址=a + (3-2)*s,第n个元素下标为n,地址=a + (n-1)*s。再看看如果第1个元素下标是0是怎样:第2个元素下标为1,地址=a+1*s,第n个元素下标为n-1,地址=a+n*s。比较一下两个式子:第1个元素下标为1: 第n个元素地址 = a+(n-1)*s第1个元素下标为0: 第n个元素地址 = a + n * s看出区别了吗?如果用0作为下标,每次在定位元素地址进,少了一次减法运算!为什么要拿0作为第1个元素的下标
你可能觉得,下标从1开始计算仅仅多了一次减法运算,可是看一看计算机的发展历史,你会明白为什么在早期的编程语言设计中会那么在意在一次减法运算。从上世纪60年代到今天的近60年间,计算设备的计算能力达到了1T倍(1万亿倍)的增长,过去那些看来相当牛掰的超级计算机,现在却连一台手机甚至一块手表都比不上。从下面的图中可以看到,1985年的Cray-2超级计算机计算能力与一台iPhone4相当,而一只iWatch的计算能力又相当于两台iPhone4。数组是计算机程序中使用非常频繁的一种数据结构,如果每次下标寻址都能节省一次运算,在早期计算机系统中程序的运行速度可能会有非常显著的提高,这样才能充分的利用当时昂贵的计算资源。出于习惯和兼容考虑,现代编程语言也把这一设计思想延续了下来,这也是为什么计算机世界里通常从0开始计数的原因。回答于 2019-09-11 08:43:50
在计算机的世界里,计数一般都是从0开始,这其实也没有什么特殊的道理,主要是约定俗成的习惯。
【Loong精选】好玩又长知识,总有你喜欢的!
欢迎在评论中发表自己不同的观点,对评论、转发、点赞不定期抽奖,敬请关注,一定回关,我的粉丝有你更精彩。
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |