C語言二維陣列教學:基礎概念、宣告方法與實用範例完整解析

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. 結論

二維陣列是管理複雜資料不可或缺且強大的基本結構。本文介紹了二維陣列的宣告、初始化、元素存取、實際應用,並延伸說明了動態記憶體配置與多維陣列。熟悉二維陣列的用法後,將有助於解決更複雜的程式設計問題。建議您也嘗試結合指標與二維陣列等更進階的應用。