有關多維陣列

2021-09-30 08:15:52 字數 1507 閱讀 5176

一、多維陣列初始化

和一維陣列一樣,多維陣列的初始化也可以分為靜態初始化(整體賦值)和動態初始化兩種,其語法格式如下。

1 靜態初始化

以二維陣列的靜態初始化為例,來說明多維陣列靜態初始化的語法格式。示例**如下:

在二維陣列靜態初始化時,也必須和陣列的宣告寫在一起。數值書寫時,使用兩個大括號巢狀實現,在最裡層的大括號內部書寫數字的值。數值和數值之間使用逗號分隔,內部的大括號之間也使用逗號分隔。

由該語法可以看出,內部的大括號其實就是乙個一維陣列的靜態初始化,二維陣列只是把多個一維陣列的靜態初始化組合起來。

同理,三維陣列的靜態初始化語法格式如下:

三維陣列可以模擬為乙個立方體,此陣列相當與b[1][1][2]。

2 動態初始化

二維陣列動態初始化的語法格式:

資料型別 陣列名稱 = new 資料型別[第一維的長度][第二維的長度];

資料型別 陣列名稱;

陣列名稱 = new 資料型別[第一維的長度][第二維的長度];

示例**:

byte b = new byte[2][3];

int m;

m = new int[4][4];

和一維陣列一樣,動態初始化可以和陣列的宣告分開,動態初始化只指定陣列的長度,陣列中每個元素的初始化是陣列宣告時資料型別的預設值。例如上面初始化了長度為2x3的陣列b,和4x4的陣列m。

使用這種方法,初始化出的第二維的長度都是相同的,如果需要初始化第二維長度不一樣的二維陣列,則可以使用如下的格式:

int n;

n = new int[2]; //只初始化第一維的長度

//分別初始化後續的元素

n[0] = new int[4];

n[1] = new int[3];

這裡的語法就體現了陣列的陣列概念,在初始化第一維的長度時,其實就是把陣列n看成了乙個一維陣列,初始化其長度為2,則陣列n中包含的2個元素分別是n[0]和n[1],而這兩個元素分別是乙個一維陣列。後面使用一維陣列動態初始化的語法分別初始化n[0]和n[1]。

二、引用陣列元素

對於二維陣列來說,由於其有兩個下標,所以引用陣列元素值的格式為:

陣列名稱[第一維下標][第二維下標]

該表示式的型別和宣告陣列時的資料型別相同。例如引用二維陣列m中的元素時,使用m[0][0]引用陣列中第一維下標是0,第二維下標也是0的元素。這裡第一維下標的區間是0到第一維的長度減1,第二維下標的區間是0到第二維的長度減1。

三、獲得陣列長度

對於多維陣列來說,也可以獲得陣列的長度。但是使用陣列名.length獲得的是陣列第一維的長度。如果需要獲得二維陣列中總的元素個數,可以使用如下**:

int m = ,

,};

int sum = 0;

for(int i = 0; i < m.length; i++)

在該**中,m.length代表m陣列第一維的長度,內部的m[i]指每個一維陣列元素,m[i].length是m[i]陣列的長度,把這些長度相加就是陣列m中總的元素個數。

有關動態多維陣列的乙個問題

同樣的錯誤,即使你的年齡越大,它會犯同樣的,opps.最近做的c 和c 混合程式設計。昨天上演了一出棧平衡了很長一段時間,今天,我們攻克了bug。既高興又傷心。看看 unsigned char bytes2d unsigned char bytesarray for int i 0 i不得不說,初學...

多維陣列和多維指標

指向指標的指標 指標變數在記憶體中會占用一定的空間 可以定義指標來儲存指標變數的位址 int pp本質上還是指標,只是兩個 告訴你這是乙個指向指標的指標char p null char p2 p p2 給p賦值沒有問題,但怎麼使用p 呢?這就需要我們前面多次提到的鑰匙 第一步 根據 p 這個變數,取...

多維陣列 和 多維指標

指標變數在記憶體中會占用一定的空間。可以定義指標來儲存指標變數的位址值。舉例 舉例說明,多級指標的使用,重置動態空間大小 include include int reset char p,int size,int new size else return ret int main return 0 ...