C语言--二维数组

86 阅读2分钟

一、二维数组的定义

格式:数据类型 数组名[行数][列数];

  • 行数:表示二维数组包含多少个一维数组(即 “行” 的数量)
  • 列数:表示每个一维数组的元素个数(即 “列” 的数量)

示例:

c

运行

// 定义一个2行3列的int型二维数组
int arr[2][3];

二、二维数组的初始化

1. 完整初始化(按行分组)

{}嵌套表示每行的元素,清晰直观:

c

运行

// 2行3列,每行元素用{}包裹
int arr[2][3] = {
    {1, 2, 3},  // 第0行
    {4, 5, 6}   // 第1行
};

2. 简化初始化(不分组)

元素按顺序填充,自动按列数分行:

c

运行

// 等价于上面的分组写法
int arr[2][3] = {1, 2, 3, 4, 5, 6};

3. 部分初始化

未赋值的元素会自动初始化为0

c

运行

// 第0行:{1,2,0};第1行:{4,0,0}
int arr[2][3] = {
    {1, 2},  
    {4}      
};

三、二维数组的访问

通过 “行下标” 和 “列下标” 访问元素(下标从0开始):格式:数组名[行下标][列下标]

示例(基于上面的arr):

c

运行

// 访问第0行第2列 → 3
printf("%d", arr[0][2]);

// 访问第1行第0列 → 4
printf("%d", arr[1][0]);

四、二维数组的遍历

通常用双层循环(外层循环控制行,内层循环控制列):

c

运行

int arr[2][3] = {{1,2,3}, {4,5,6}};
// 遍历行(i是行下标)
for(int i = 0; i < 2; i++){
    // 遍历当前行的列(j是列下标)
    for(int j = 0; j < 3; j++){
        printf(&#34;%d &#34;, arr[i][j]);
    }
    printf(&#34;\n&#34;); // 每行结束换行
}

输出结果:

plaintext

1 2 3 
4 5 6

五、核心本质

二维数组在内存中是连续存储的(按 “行优先” 顺序排列),比如arr[2][3]的内存布局是:arr[0][0] → arr[0][1] → arr[0][2] → arr[1][0] → arr[1][1] → arr[1][2]