二維陣列(初學者)

2021-10-01 05:22:47 字數 1636 閱讀 4737

1、二維陣列的定義:當陣列中每個元素帶有兩個下標時,稱這樣的陣列為二維陣列。在邏輯上可以把二維陣列看成是乙個具有行和列的**或乙個矩陣。

一般形式:型別說明符 陣列名[常量表示式1][常量表示式2];

例:定義a為3*4(3行4列)的陣列,b為5*10(5行10列)的陣列。

#include #include

void

main()

在記憶體中的表達:

例如:int a[3][4];說明了乙個三行四列的陣列,陣列名為a,其下標變數的型別為整型,該陣列的下標變數共有3*4個。即:

a[0][0], a[0][1], a[0][2], a[0][3]

a[1][0], a[1][1], a[1][2], a[1][3]

a[2][0], a[2][1], a[2][2], a[2][3]

在c語言中可以把乙個二維陣列看成是乙個一維陣列,每個陣列元素又是包含有若干個元素的一維陣列。如以上a陣列可以看成是由a[0]、a[1]、a[2]三個元素組成的一維陣列,其中每個元素又是由四個整型元素組成的一維陣列。建立起這一概念是十分重要的,因為c語言編譯系統確實是把二維陣列a中的a[0]、a[1]、a[2]作為陣列名來處理的。

二維陣列在概念上是二維的,但是,實際的硬體儲存器卻是連續編址的,也就是說儲存器單元是按一維線性排列的。

如何在一維儲存器中存放二維陣列,有兩種方式:一種是按行排列,即放完一行後順次放入第二行。另一種是按列排列,即放完一列後再順次放入第二列。在c語言中,二維陣列是按行排列的。

衍生:多維陣列的定義

定義三維陣列:float a[2][3][4];

多維陣列在記憶體中的排列:第一維的下標變化最慢,最右邊的下標變換最快。

2、二維陣列的引用和初始化

形式:資料型別 陣列名[常量表示式1][常量表示式2]=;

二維陣列的初始化有四種方式:

(1)所賦初值個數與陣列元素的個數相同

可以在定義二維陣列的同時給二維陣列的各元素賦初值。

例如:int a[4][3]=,,};

全部初值括在一對花括號中,之間用逗號隔開。

(2)每行所賦初值個數與陣列元素個數不同

當某行一對花括號內的初值個數少於該行中元素的個數時,如:

int a[4][3]=,,,};

系統將自動給該行後面的元素補初值0。因此,a[0][2]、a[2][1]的初值為0。也就是說,不能跳過每行前面元素二給後面的元素賦初值。

(3)所賦初值行數少於陣列行數

當代表著給每行賦初值的行花括號對少於陣列的行數時,如:

int a[4][3]=,};

系統將自動給後面各行的元素補初值0。

(4)賦初值時省略行花括號對

在給二維陣列賦初值時可以不使用行花括號對,如:

int a[4][3]=

系統將按a陣列元素在記憶體中的排列順序,將花括號中的資料一一對應的賦給各元素,若資料不足,系統將給後面的元素自動補初值0。

注:如果對全部元素都賦初值,則定義陣列時對第一維的長度可以不指定,但第二維的長度則不能省。

例:int a[3][4]=; 等價於 int a[4]=;

在定義時可以只對部分元素賦初值而省略第一維長度,但應分行賦初值。

例:int a[4]=,{},};

不建議使用

二維陣列(初學者)

1 二維陣列的定義 當陣列中每個元素帶有兩個下標時,稱這樣的陣列為二維陣列。在邏輯上可以把二維陣列看成是乙個具有行和列的 或乙個矩陣。一般形式 型別說明符 陣列名 常量表示式1 常量表示式2 例 定義a為3 4 3行4列 的陣列,b為5 10 5行10列 的陣列。include include vo...

初學者談初學者學html

這是乙個段落。解釋一下就是 html 與 html 之間的文字是描述網頁。head 與 head 之間的文字是文件的元資料。title 與 之間的文字是文件的標題。body 與 body 之間的文字是可見的頁面內容,是文章的主體部分。h1 與 h1 之間的文字被顯示為乙個大標題。p 與 p 之間的文...

初學者如何學習運維?

老男孩語錄 初學者如何學習運維?先實踐後看原理 很多初學者思維的誤區是先了解原理在去實踐 很多有經驗的運維給初學者的建議是先把原理看懂,在去實踐。他們的思想是原理比操作更重要。其實,這是很誤導人的錯誤學習運維的思想。運維實際上是應用性為主的一門學問。沒有基礎的運維一定是實踐更容易,看原理相對更難,造...