首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言基礎

C語言二維數組完整指南:定義、初始化、內存佈局、矩陣運算實戰

     編輯:C 語言基礎

二維數組定義

dataType arrayName[length1][length2];
  • length1:行數(第一維)
  • length2:列數(第二維)
  • 例:int a[3][4]; → 3 行 4 列,共 12 元素

內存佈局:按行存儲

C 語言二維數組在內存中按行連續存放:

a[0][0] a[0][1] a[0][2] a[0][3]  a[1][0] a[1][1] ... a[2][3]
  • 先存完第 0 行,再存第 1 行,以此類推
  • 每行內元素按列順序存放
  • 整個數組佔用連續內存塊

二維數組初始化

按行分組初始化(推薦,清晰)

int a[5][3] = {
    {80, 75, 92},   // 第 0 行
    {61, 65, 71},   // 第 1 行
    {59, 63, 70},
    {85, 87, 90},
    {76, 77, 85}
};

按行展開初始化(等效)

int a[5][3] = {80,75,92, 61,65,71, 59,63,70, 85,87,90, 76,77,85};

實戰:學生成績統計(矩陣轉置思維)

5 學生 × 3 科目,求各科平均分與總平均分。

#include <stdio.h>

int main() {
    int a[5][3] = {
        {80, 75, 92},   // 張:數學、C、英語
        {61, 65, 71},   // 王
        {59, 63, 70},   // 李
        {85, 87, 90},   // 趙
        {76, 77, 85}    // 周
    };
    int v[3] = {0};     // 各科平均分
    int average;        // 總平均分
    
    // 遍歷科目(列),累加該科所有學生(行)成績
    for (int i = 0; i < 3; i++) {
        int sum = 0;
        for (int j = 0; j < 5; j++) {
            sum += a[j][i];  // 注意:a[行][列] = a[學生][科目]
        }
        v[i] = sum / 5;
    }
    
    average = (v[0] + v[1] + v[2]) / 3;
    
    printf("Math: %d\nC Language: %d\nEnglish: %d\n", v[0], v[1], v[2]);
    printf("Total Average: %d\n", average);
    return 0;
}

運行結果

Math: 72
C Language: 73
English: 81
Total Average: 75

二維數組分解為一維數組

a[3][4] 可視為 3 個一維數組:

  • a[0] → 第 0 行(4 元素):a[0][0]..a[0][3]
  • a[1] → 第 1 行
  • a[2] → 第 2 行

a[0]、a[1]、a[2] 是數組名(首地址),不能作為下標變量使用。

部分初始化規則

int a[3][3] = {{1}, {2}, {3}};   // 每行首元素賦值,其餘補 0
// 結果:
// 1 0 0
// 2 0 0
// 3 0 0

int a[3][3] = {{0,1}, {0,0,2}, {3}};
// 結果:
// 0 1 0
// 0 0 2
// 3 0 0

省略第一維長度

全體初始化時,第一維可省略:

int a[][3] = {1,2,3,4,5,6,7,8,9};  // 編譯器推導為 3 行

矩陣運算擴展

二維數組是矩陣運算基礎:

  • 矩陣加法:對應元素相加
  • 矩陣乘法:行 × 列點積(三層循環)
  • 轉置:b[j][i] = a[i][j]
  • 行列式、逆矩陣:數值計算進階主題
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved