1. 介紹
在C語言中,「二維陣列」是許多程式設計場合常用的重要資料結構。它可以輕鬆管理和操作複雜的資料,這是單一一維陣列難以實現的。本文將從基礎到應用詳細說明二維陣列,幫助程式設計新手到中階使用者深入理解。
2. 什麼是二維陣列
2.1 基本概念
二維陣列是一種使用行和列兩個索引來儲存資料的陣列。在C語言中,定義方法如下:
資料型態 陣列名稱[行數][列數];
例如,宣告int matrix[3][4];
,就會產生一個3行4列的整數型二維陣列。可以將其想像成多個一維陣列的集合,更容易理解。
2.2 二維陣列的用途
二維陣列非常適合管理像RPG地圖、表格型資料等橫向和縱向排列的資料。除此之外,也常用於處理影像像素資訊或遊戲棋盤等場景。使用二維陣列可以有效提升資料管理效率,同時也讓程式碼更易讀。
3. 二維陣列的宣告與初始化
3.1 宣告方法
宣告二維陣列的基本語法如下:
int matrix[3][4];
這表示宣告了一個3行4列的整數陣列。注意,這些元素在宣告時尚未被初始化。
3.2 初始化方法
宣告的同時也可以為二維陣列設定初始值。
int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}};
這段程式碼會建立一個2行3列的matrix陣列,每個元素都對應給定的值。也可以省略行數來進行初始化:
int matrix[][3] = {{1, 2, 3}, {4, 5, 6}};
這時編譯器會自動判斷行數並完成初始化。
4. 存取二維陣列的元素
4.1 元素的存取方法
存取二維陣列中特定元素時,需要指定行與列的索引。
matrix[1][2] = 10;
這個例子表示將值10
賦予matrix
的第2行第3列。由於索引從0開始,所以matrix[1][2]
對應的是第2行第3列。
4.2 使用迴圈來存取
若要存取二維陣列的所有元素,可用兩層for
迴圈。
for (int i = 0; i < 行數; i++) {
for (int j = 0; j < 列數; j++) {
printf("%d ", matrix[i][j]);
}
printf("n");
}
這段程式會逐一處理二維陣列的每個元素並輸出內容。第一層迴圈控制行,第二層控制列。
5. 二維陣列的實例應用
5.1 基本範例
以下範例將兩位學生的三科成績用二維陣列管理,並輸出每位學生的成績:
int scores[2][3] = {{72, 80, 90}, {65, 75, 85}};
for (int i = 0; i < 2; i++) {
printf("學生%d的成績:n", i + 1);
for (int j = 0; j < 3; j++) {
printf("科目%d: %d分n", j + 1, scores[i][j]);
}
}
這段程式利用二維陣列管理學生成績,並透過迴圈輸出各元素。
5.2 動態配置二維陣列
也可以利用動態記憶體配置建立二維陣列。請參考下例:
int (*matrix)[3] = malloc(sizeof(int) * 行數 * 3);
for (int i = 0; i < 行數; i++) {
for (int j = 0; j < 3; j++) {
matrix[i][j] = i * 3 + j;
}
}
free(matrix);
這裡透過malloc
動態配置記憶體,因此二維陣列的大小可於執行時決定。記憶體用完後,請務必用free
釋放。
6. 二維陣列的進階應用
6.1 多維陣列
二維陣列的概念還可以擴展成三維或更多維。例如,三維陣列的定義如下:
int array[2][3][4];
這種陣列共有2×3×4個元素,可用三個索引存取。透過多維陣列能更有效率地管理複雜資料結構。
6.2 高效資料處理
二維陣列是進行資料儲存與操作的強大工具。例如,可用二維陣列保存表格資料,並針對行或列進行資料分析與統計運算,大幅提升效率。
7. 結論
二維陣列是管理複雜資料不可或缺且強大的基本結構。本文介紹了二維陣列的宣告、初始化、元素存取、實際應用,並延伸說明了動態記憶體配置與多維陣列。熟悉二維陣列的用法後,將有助於解決更複雜的程式設計問題。建議您也嘗試結合指標與二維陣列等更進階的應用。