在C语言中,二维数组是一种非常基础且常用的数据结构,它本质上是由多个一维数组组成的数组,可以理解为一个带有行和列的矩阵。通过二维数组,我们可以方便地存储和处理表格类型的数据,比如学生成绩、地图坐标等。

二维数组的声明表示
C语言中二维数组的声明格式如下:
数据类型 数组名[行数][列数];
例如,要表示一个3行4列的整型二维数组,可以写成:
int score[3][4];
这里 int 是元素类型,score 是数组名,方括号中的第一个数字表示行,第二个表示列。需要注意的是,C语言数组下标从0开始,所以上面这个数组行下标是0到2,列下标是0到3。
二维数组的初始化
我们可以在声明时直接给二维数组赋初值,常见写法是用大括号包裹每一行:
#include <stdio.h>
int main() {
// 声明并初始化一个2行3列的二维数组
int arr[2][3] = {
{1, 2, 3}, // 第0行
{4, 5, 6} // 第1行
};
return 0;
}
如果省略行数,编译器会根据初始化内容自动推算行数:
int arr[][3] = {{1,2,3}, {4,5,6}}; // 自动识别为2行3列
访问与遍历二维数组
使用双层循环可以很方便地遍历二维数组的所有元素:
#include <stdio.h>
int main() {
int arr[2][3] = {{1,2,3}, {4,5,6}};
int i, j;
for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++) {
printf("arr[%d][%d] = %dn", i, j, arr[i][j]);
}
}
return 0;
}
内存中的存储方式
虽然二维数组在逻辑上是行列结构,但在内存中它是按行优先顺序连续存放的。也就是说,先放第0行的所有元素,再放第1行,依次类推。这一点在使用指针操作二维数组时非常关键。
| 行下标 | 列下标 | 内存顺序 |
|---|---|---|
| 0 | 0 | 第1个 |
| 0 | 1 | 第2个 |
| 1 | 0 | 第4个 |
小结
总结一下,C语言中二维数组通过 类型 名[行][列] 的形式表示,下标从0计起,初始化和遍历都依赖双层结构。理解它在内存中的连续行优先布局,有助于后续学习数组指针和动态内存分配。