爲何大部分編程語言的數組的下標都從0開始?

衆所周知,數組的一大優勢是隨機訪問,如何實現隨機訪問呢?數組

數組的特色:bash

  • 線性
  • 連續的內存空間和相同類型的數據

基於以上兩個特色也就決定了數組原生的支持隨機訪問的特性。學習

數組是如何實現根據下標隨機訪問數組元素的呢?spa

下面咱們用一個長度爲5的int類型的數組爲例,來看一下它的具體實現3d

如上圖,數組爲a[5],計算機爲該數組分配了一塊連續的內存空間100-119,其中,內存塊的首地址爲first_addr = 100code

計算機會給每一個內存單元分配一個地址,計算機經過地址來訪問內存中的數據。當計算機須要隨機訪問數組中的a[k]時,能夠經過以下的公式計算出a[k]的內存地址:cdn

a[k]_address = first_address + k * data_type_size
複製代碼

data_type_size 表示的是每一個元素的大小。例子中的數組是int類型,因此data_type_size就是4字節。blog

上面的公式默認是下標從0開始的狀況,若是數組的下標是從1開始的話,那計算數組元素a[k]的內存地址的公式就會變爲:內存

a[k]_address = first_address + (k-1) * data_type_size
複製代碼

對比上面兩個公式,能夠發現,若是下標從1開始計數,每次隨機訪問數組元素時都將多進行一次減法運算,對於CPU來講,就是多了一次減法指令。it

這是其中的一個緣由,其餘緣由歡迎你們一塊兒交流學習。

相關文章
相關標籤/搜索