為什么數組的下標要從零開始?


之前剛入行時,沒有學習好計算機知識,雖然有疑惑但是沒有深究,最近在補習基礎知識。對於"為什么數組的下標要從零開始?",覺得自己可以解答了。數組下標從零開始主要是提高性能,減少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