衆所周知,數組的一大優勢是隨機訪問,如何實現隨機訪問呢?數組
數組的特色: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
這是其中的一個緣由,其餘緣由歡迎你們一塊兒交流學習。