为什么数组的下标要从零开始?


之前刚入行时,没有学习好计算机知识,虽然有疑惑但是没有深究,最近在补习基础知识。对于"为什么数组的下标要从零开始?",觉得自己可以解答了。数组下标从零开始主要是提高性能,减少CPU计算。

如何读取数组数据的呢?

假设我们去读取array[2]的值,我们如何读取它的值的呢?

  • 首先数据的获取方式:
  1. 先得到一个数据的地址(array)
  2. 然后对其进行偏移(数组的下标)

如果使用指针来表示就是*(array+2),所以array[2]*(array+2)是等价的。看成计算公式可以为:an=a0+n

那么为什么不能从一开始呢?

如果数组从1开始计算,那么获取数组的第一个元素表达方式就是array[1],但是数组的第一个元素的地址就是arrayCPU每次获取元素需要减去1。即必须这样做:*(array + 1 - 1),其中 +1 操作是数组的下标,-1 操作是为了获得正确的元素地址。所以每次获取数组数据时为了获取正确的地址,都需要-1操作,增加了cpu的负担。如果从零开始,就少了 -1 操作,提交了CPU的效率。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM