數組的下標爲什麼從0開始

數組Arrary)是一種線性表數據結構。它用一組連續的內存空間,來存儲一組具有相同類型的數據。

從數組存儲的內存模型上來看,“下標”最確切的定義應該是“偏移(offset)”。如果用a來表示數組的首地址,a[0]就是偏移爲0的位置,也就是首地址,a[k]就表示偏移k個type_size的位置,所以計算a[k]的內存地址只需要用公式:

a[k]_address = base_address + k * type_size;

但,如果數組從1開始計數,那公式的k就要做相應的改變了:

a[k]_address = base_address + (k - 1 ) * type_size;

對比兩個公式,我們發現,如果從1開始編號,每次隨機訪問數組元素都多了一次減法運算,對於cpu來說,就是多了一次減法指令。

數組作爲非常基礎的數據結構,通過下標訪問數組元素又是其非常基礎的編程操作,效率的優化就要儘可能的做到極致。從0開始,可以減少一次減法操作。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章