c 語言允許使用多維陣列,即使用多組小標的陣列,二維陣列是最常用的多維陣列。多維陣列在記憶體中存放資料的順序與一維陣列相同,使用連續的儲存單元。
4.2.1 二維陣列的一般形式
二維陣列的一般宣告形式為:
陣列型別 陣列名[長度1][長度2];陣列的總長度等於 長度1 與 長度2 的乘積。如下列所示:
char c[2][5] = ; // 宣告二維陣列並初始化,陣列總長度為 10
該語句宣告了乙個擁有 10 個儲存單元的字元型陣列,在記憶體中的位置如下圖所示。在實際應用中,可將二維陣列理解為乙個**,第一組小標為**的行數,第二組小標為**的列數。每組下標以 0 開始,最後乙個元素的下標數值為長度減1。
注意:引用陣列邊界之外的元素將造成程式執行錯誤。陣列初始值列表中提供的初始值多於陣列元素數量,使用變數作為陣列長度宣告陣列將引起編譯錯誤。
4.2.2 二維字串陣列
二維字串陣列可以看作是多個一維字串陣列,第一組下標長度即存放的字串個數,第二組下標長度是可存放的最長的字串長度加 1。當使用標準函式庫的字串函式處理二維字串陣列時,必須給出第一組下標,每次只能處理其中乙個字串。如下例所示:
char buddy[3][200];
int i;
scanf("%50s", buddy[0]); // 從鍵盤輸入獲取長度為 50 的字串,並儲存到陣列第 1 行
scanf("%30s," buddy[1]);
scanf("%199s", buddy[2]); // 從鍵盤輸入獲取長度為 199 的字串,並儲存到陣列第 3 行
printf("\n您輸入的資訊是:\n");
for (i = 0; i < 3; i++)
示例中宣告了乙個長度為 600 的二維字串陣列,該陣列最後一組下標的長度為 200,所以能存放的字串長度最長為 199。使用scanf() 和 printf() 函式處理字串陣列時,要省略掉最後一組下標,這樣能得到所要處理的字串的首位址,字串處理函式會在遇到字串結束符是停止處理,忽略字串結束符後的儲存單元。scanf()函式會為輸入的字串加上字串結束符。當輸入的字串長度超過格式控制符所指定的長度時,scanf()函式將自動根據指定長度裁剪。但如果格式控制符沒有指定長度,則會竄入下一行,造成邏輯錯誤。 C語言二維陣列
int main int argc,const char argv int array 5 建立乙個二維陣列 型別修飾符陣列名 包含幾個小陣列 每個小陣列有多少個元素 初始值如何寫?int array 3 4 一維陣列可以省略元素個數,二維陣列只能省略第一位 第乙個 3 可以不寫 第二種初始值寫法 ...
C語言 二維陣列
c語言之二維陣列 1 定義的基本格式 int a 1 2 1代表一行,2代表二列 難點 二維陣列的行列下標。字串結束標誌的實用。2 一維陣列和二維陣列的聯絡。一維陣列如同千層面一樣一層一層的,而二維陣列,只是給千層面切了幾刀 3 int a 2 3 a 0 0 是1,a 0 1 是2,a 0 2 是...
C語言 二維陣列
1 陣列名稱不可以代表儲存區 2 陣列名稱可以代表陣列裡第乙個儲存區的位址 3 可以對陣列名稱進行sizeof計算,結果是陣列裡所有儲存區的總大小 4 c99規範裡可以使用變長陣列,宣告變長陣列的時候可以用變數表示陣列裡的儲存區個數 5 某一次程式執行過程中變長陣列裡儲存區個數不會變化 6 如果程式...