查看原文
其他

C语言的数组为什么要从0开始编号

杨源鑫 嵌入式云IOT技术圈 2021-01-31

 先听首歌,放松下心情!

微信公众号:morixinguan
关注可了解更多的教程。问题或建议,请公众号留言;
如果你觉得本文对你有帮助,欢迎赞赏

    在学习数据结构与算法之美中看到一个知识点挺有趣,虽然不是作者压倒性的实验证明,但分析起来也是有道理的,我们来看看是怎么回事:

    假设又有a[i]和b[i]两个int类型的数组,如果按计算偏移地址来获取数据,a表示数组的首地址,如果数组从0开始计数,则a[0]就是偏移为0的位置,a[i]表示偏移i个数据类型大小的位置。则a[i]满足以下计算公式:

1a[i] = 基地址 + i * 数据类型

    如果数组从1开始计数,则满足以下公式:

1b[i] = 基地址+(i-1)*数据类型

    很显然,从1开始计数编号,每次随机访问数组元素都多了一次减法运算,对于CPU来说,即是多了一条SUB指令,显然从0开始计算要高效一些。

另外推荐相关课程:

    韦东山老师优质嵌入式学习干货推荐:包括ARM裸机开发、Linux设备驱动程序、Linux应用程序开发、Android系统学习、Linux设备树等。

    在我这里购买韦东山老师的课程不仅可以比淘宝等网站优惠,还可得到本人的技术支持,手把手带你飞!

王争老师优秀数据结构算法学习课程推荐

    新人购买仅需69元,在我这里购买还可优惠10元,机会不容错过!

长期商务合作服务:

     本公众号以及本人在圈子里有很多的人流量,如需定期产品推广,货源代销等可关注微信公众号<<安立顺产品服务>>,我们可以用这个公众号来帮你赚更多的钱。

联系人:

深圳安立顺技术研发事业群总经理 杨源鑫

    上个月去4S店提车的时候,抽奖抽到了一个净水器,原价2980元,京东可查,100%全新,现1900元转手,有需要的可以直接微信联系我。


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存