一、二维数组的定义
格式:数据类型 数组名[行数][列数];
- 行数:表示二维数组包含多少个一维数组(即 “行” 的数量)
- 列数:表示每个一维数组的元素个数(即 “列” 的数量)
示例:
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("%d ", arr[i][j]);
}
printf("\n"); // 每行结束换行
}
输出结果:
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]