跳到主要内容

C 语言二维数组

在C语言中,数组是一种用于存储相同类型数据的集合。一维数组可以看作是一行数据,而二维数组则可以看作是一个表格或矩阵,它由行和列组成。二维数组在处理表格数据、矩阵运算等场景中非常有用。

什么是二维数组?

二维数组是一个数组的数组,即每个元素本身也是一个数组。它可以被想象为一个由行和列组成的表格。例如,一个3行4列的二维数组可以表示为:

c
int arr[3][4];

这个数组有3行,每行有4个整数元素。

定义和初始化二维数组

定义二维数组

二维数组的定义语法如下:

c
数据类型 数组名[行数][列数];

例如,定义一个3行4列的整数数组:

c
int arr[3][4];

初始化二维数组

二维数组可以在定义时进行初始化。初始化时,可以按行列出所有元素,也可以使用嵌套的大括号来明确每行的元素。

c
int arr[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};

也可以省略行数,让编译器自动推断:

c
int arr[][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
备注

注意:列数必须明确指定,不能省略。

访问二维数组元素

二维数组的元素通过行索引和列索引来访问。索引从0开始。

c
int value = arr[1][2]; // 访问第2行第3列的元素,值为7

遍历二维数组

可以使用嵌套循环来遍历二维数组的所有元素:

c
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}

输出结果为:

1 2 3 4 
5 6 7 8
9 10 11 12

二维数组的内存布局

二维数组在内存中是按行存储的,即先存储第一行的所有元素,然后是第二行,依此类推。例如,数组 int arr[3][4] 的内存布局如下:

实际应用场景

矩阵运算

二维数组常用于表示矩阵,并进行矩阵运算。例如,矩阵的加法和乘法:

c
// 矩阵加法
void matrixAddition(int a[3][3], int b[3][3], int result[3][3]) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
result[i][j] = a[i][j] + b[i][j];
}
}
}

// 矩阵乘法
void matrixMultiplication(int a[3][3], int b[3][3], int result[3][3]) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
result[i][j] = 0;
for (int k = 0; k < 3; k++) {
result[i][j] += a[i][k] * b[k][j];
}
}
}
}

游戏开发

在游戏开发中,二维数组常用于表示地图或棋盘。例如,一个简单的棋盘可以用二维数组表示:

c
char board[8][8] = {
{'R', 'N', 'B', 'Q', 'K', 'B', 'N', 'R'},
{'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P'},
{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
{'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p'},
{'r', 'n', 'b', 'q', 'k', 'b', 'n', 'r'}
};

总结

二维数组是C语言中非常重要的数据结构,它可以帮助我们处理表格数据、矩阵运算等复杂问题。通过本教程,你应该已经掌握了二维数组的定义、初始化、访问方式以及实际应用场景。

提示

建议你尝试编写一些简单的程序来练习二维数组的使用,例如实现矩阵的转置、查找二维数组中的最大值等。

附加资源

通过不断练习和探索,你将能够更加熟练地使用二维数组来解决实际问题。祝你学习愉快!