首页/文章/ 详情

为何数组索引从0开始?

6月前浏览513

本文摘要(由AI生成):

本文讨论了不同编程语言中数组索引的差异,如Fortran从1开始,而Python或C++从0开始。无论哪种语言,最终程序需转化为机器码执行。在机器层面,数组索引通过寄存器中的地址和偏移量处理。C++等基于0的索引语言在计算元素地址时效率略高,但此优势对现代计算机而言微不足道。C系列语言的设计思路更接近CPU操作。


一些编程语言的索引从1开始。比如在Fortran中,声明数组integer :: array(5)会创建一个包含5个元素的数组。要访问第一个位置的元素,则索引为1,即array(1)。而在python或者C++语言,第一个元素的索引则为0。

不管用什么语言编写程序,最终都要转化成CPU能实际执行的机器码。

在机器级别,数组索引通过偏移量来处理:一个寄存器(CPU内部特殊的内存)数组地址(数组第一个元素的地址),而另一个寄存器则包含偏移量,即到目标元素的距离。

第一个元素的偏移量和C++一样是0,使用Fortran这样的语言,必须先将基于1的索引转换成基于0的索引,再乘以每个元素的地址大小获得索引为i的元素地址:

                 元素i的地址 = 基本地址+((i-1)*每个元素地址大小)

而C++这样基于0的索引的语言则可以稍微提高一下效率:

                 元素i的地址 = 基本地址+(i*每个元素地址大小)


表面上看起来是节省了一些CPU运行时间,这对于现代计算机硬件设施来说微不足道。不过所有C系列语言(C,C++,C#)就是这样的的设计思路,也最接近CPU所做的事情。


参考文献《C++ Without Fear,3rd》


来源:数值分析与有限元编程
python
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-04-02
最近编辑:6月前
太白金星
本科 慢慢来
获赞 5粉丝 8文章 318课程 0
点赞
收藏
作者推荐

建模 | 冰川融化模型

背景 冰川,是气候变化的记录器和预警器。我国是世界上中低纬度冰川最发育的国家,其中以青藏高原为主体的第三极是除南北两极之外最重要的冰川富集地区。 由于全球气候变暖和温室效应,地球上的冰川和冰架目前正在不断消融,而且速度还在进一步的加快。仅在本世纪的前9年间,许多冰川、冰盖甚至冰架都相继消失了。冰川是地球上最大的淡水库,全球70%的淡水被储存在冰川中。冰川融化和退缩的速度不断加快,这意味着数以百万的人口将面临着洪水、干旱以及饮用水减少的威胁。 在1992年到2017年之间,南极洲失去了超过3.3万亿吨的冰,导致全球海平面平均上升8毫米。根据新的研究,大约40%的损失发生在2012年到2017年之间。 根据我国两次冰川编目统计数据来看,随着地球气候全球变暖的加剧,我国高原冰川已经有快 速融化的迹象。比如,从1970年前后到2010年,全国的冰川面积就减少了大约12442.4平方公里,占比冰川总面积的20.6%左右。而在2016年和2018年的时候,分别在位于西 藏阿里地区的阿汝冰川,以及藏东南地区雅鲁藏布江的色东浦沟发生了两次冰崩堵江事件,从而引发了我们对冰原的担忧。 模型图1为某冰川断面示意图:岩石山体表面覆盖一层冰川。峰顶露出岩石即认为冰川已全部融化。假设从初始研究状态到冰川完全融化这一过程中,冰川与山体的外形始终为抛物面现状,其方程为:假设任意时刻,冰川体积为V,表面积为S,且冰川融化速率可表示为其中k为常数。 通过观测发现,从初始研究状态开始经过了20年,该冰川高度下降了dh,估算其体积为初始时的一半,则全部融化还需多长时间?★★★往期相关★★★建模 | 利用格林公式计算湖泊面积建模 | 猪肉价格预测模型来源:数值分析与有限元编程

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈