8.9暑假集训 二维数组(预习必看)(新手必看)
一、二维数组的定义
在 C++中,二维数组是由多个一维数组组成的数组。它可以被看作是一个矩阵,具有行和列的结构。
int array[2][3]; // 定义一个 2 行 3 列的整型二维数组
如下图:
二维数组的大小在定义时就需要确定,并且不能在后续进行更改。
二、二维数组的初始化
- 逐个元素初始化
这种方式可以清晰地为每一个元素指定具体的值。
int array[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} };
- 部分初始化
如果只对部分元素进行初始化,未初始化的元素会被默认初始化为 0 (对于整型和浮点型)、false (对于布尔型)或者空指针(对于指针类型)等。
int array[3][4] = { {1, 2}, {5, 6, 7}, {9} }; // 未初始化的元素会被初始化为 0
- 省略行维度初始化
行维度可以省略,但列维度不能省略。编译器会根据初始化的值自动推断出行的数量。
int array[][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} };
三、访问二维数组元素
通过行索引和列索引来访问二维数组中的元素。索引从 0 开始。
int value = array[1][2]; // 访问第 2 行第 3 列的元素
// 例如,如果要修改某个元素的值
array[0][0] = 100;
四、二维数组的遍历
通常使用嵌套的 for 循环来遍历二维数组的每一个元素。
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
cout << array[i][j] << " ";
}
cout << endl;
}
还可以使用其他的遍历方式,比如使用指针(超纲了):
int (*ptr)[4] = array;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
cout << *(*(ptr + i) + j) << " ";
}
cout << endl;
}
五、二维数组作为函数参数
- 直接传递数组
void Print_Er_Wei_Array(int array[][4], int rows) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < 4; j++) {
cout << array[i][j] << " ";
}
cout << endl;
}
}
*注意:在这种方式中,第二维的大小必须明确指定。
- 传递指针(超纲)
void Print_Er_Wei_Array(int (*array)[4], int rows) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < 4; j++) {
cout << (*(array + i))[j] << " ";
}
cout << endl;
}
}
*注意:这种方式在本质上与直接传递数组是相同的。
六、二维数组的用处
一、表示矩阵
- 数学计算
- 用于线性代数中的矩阵运算,如矩阵乘法、加法等。
- 例如,图像处理中的变换矩阵。
- 游戏开发
- 表示游戏地图,其中每个元素可以表示地图中的一个位置的属性,如是否可通行、地形类型等。
- 存储角色的位置和状态信息。
二、表格数据
- 电子表格
- 类似 Excel 中的表格,可以存储数字、文本等各种类型的数据。
- 方便进行数据的统计和分析。
- 数据库中的数据
- 在简单的程序中模拟数据库表,每行和每列代表不同的字段和记录。
三、图像表示
- 像素数据
- 可以用来存储图像的像素信息,其中每行代表图像的一行像素,每列代表每个像素的颜色分量(如 RGB )。
四、棋盘游戏
- 棋盘状态
- 如国际象棋、围棋等棋盘类游戏,二维数组的每个元素可以表示棋盘上相应位置的棋子状态。
五、文本处理
- 字符矩阵
- 处理多行多列的文本,例如排版格式的控制。
六、科学计算
- 物理模型
- 模拟物理场,如温度场、电场等在二维空间中的分布。
(有问题的话请大佬告知我)
(内心:我想要勋章(っ °Д °;)っ) (第三天)
© 2024 本内容版权归梅耀元所有,未经授权请勿转载。