您現在的位置是:首頁 > 綜合

c++入門篇(三十一),二維陣列宣告與初始化

  • 由 小嘟嘟熊 發表于 綜合
  • 2022-03-02
簡介從上圖程式碼中我們可以看出,所謂按順序初始化就是先從左向右在由上而下的初始化,即是第一行所有陣列初始化完了以後再對第二行進行初始化,而安行初始化則是用一對大括號來表示每一行,跳過前一行沒有初始化的元素,在行內從左到右的初始化,對於沒有初始化

在任何情況下對二維陣列的初始化

一維空間是一條線,數學中用一條數軸來表達,二維空間是一個平面,數學中用平面座標來表達,那麼二維陣列又是什麼樣的呢?

一,線與面(一維陣列和二維陣列)

我們用一個下標來描述一維陣列中的某個元素,就好像在用數描述一條線上的點,而所有的資料都是存在這條線上。如果我們用兩個下標,就能形成一個平面,猶如一張表格,有行有列,所有的資料就能存在表格裡,如圖:

c++入門篇(三十一),二維陣列宣告與初始化

我們把二維陣列的兩個下標分別稱為行下標與列下標,在前面的是行下標,後面的是列下標。那麼什麼時候要用到陣列呢?一般有兩種情況,一種是描述一個二維的事物,比如用1表示牆,用0表示通路,可以用二維陣列來描述一個迷宮地圖,用1表示有通路,用0表示沒有通路,可以用二維陣列來描述幾個城市之間的交通情況。還有一種是描述多個具有多項屬性的事物,比如有多個學生,每個學生有語文,數學,英語3門成績,我們就可以用二維陣列來描述。

對於第二種情況,要注意各項屬性應該是同一種資料型別,比如3種科學的成績都是整數。如果出現了字串屬性,就不能將它們組合到一個二維數組裡去,所以不要企圖將不同資料型別的屬性整合到一個二維陣列中去。

二,二維陣列的宣告與初始化

二維陣列的宣告與一維陣列的宣告類似,不同之處在於多了一個下標,語法為;

資料型別 陣列名 [行數] [列數]

二維陣列的下標也都是從0開始的,

二維陣列的初始化分為2種,一種是順序初始化,另一種是按行初始化,我們來寫一段程式,執行一下就能夠對它們有所瞭解了。

c++入門篇(三十一),二維陣列宣告與初始化

從上圖程式碼中我們可以看出,所謂按順序初始化就是先從左向右在由上而下的初始化,即是第一行所有陣列初始化完了以後再對第二行進行初始化,而安行初始化則是用一對大括號來表示每一行,跳過前一行沒有初始化的元素,在行內從左到右的初始化,對於沒有初始化的值,則是一些不確定的值。

三,省略一維的大小

我們之前學到,一維陣列的大小可以省略,可是二維陣列的元素個數是行數與列數的乘積,如果只告訴計算機元素個數,計算機無法知道這個陣列是幾行幾列。所以C++規定,在宣告和初始化一個二維陣列時,只有第一維(行下標)可以省略。例如;

int array [][3] ={1,2,3,4,5,6}

相當於:

int ayyay [2][3]={1,2,3,4,5,6}

四,二維陣列在記憶體中儲存的情況

先前已經說明,記憶體是依靠地址來確定記憶體中唯一一個儲存單元的,它只包含一個引數,所以在記憶體中,所有的資料都像一維陣列那樣順序儲存的,那麼具有兩個下標的二維陣列是怎樣存放的呢?

在記憶體中,先將二維陣列的第一行資料按順序儲存,接著就是第二行的資料,然後就是第三行……以此類推。

本篇完!喜歡的朋友可以收藏與轉發,歡迎大家在下方評論留言,下一篇《記憶體裡的快捷方式(指標)》

Top