14.数组-二维数组
14.1 知识点
基本概念
二维数组是使用两个下标(索引)来确定元素的数组。两个下标可以理解为行标和列标。例如,矩阵:
1 2 3
4 5 6
可以用二维数组 变量名[2][3]
表示,表示两行三列的数据集合。
二维数组的声明
1. 声明一个未初始化的二维数组
int arr[3][4];
这段代码声明了一个3行4列的二维数组,相当于为其分配了3*4=12个内存位置来存储 int
类型的值,但这些值还没有初始化,因此它们是未确定的。
2. 声明并初始化二维数组
int arr2[3][4] = { {1,2,3,4},
{5,6,7,8},
{9,10,11,12} };
这段代码声明了一个3行4列的二维数组,并在声明时初始化了每个元素的值。
3. 按“房间”初始化二维数组
int arr3[3][4] = { 1,2,3,4,
5,6,7,8,
9,10,11,12 };
这段代码是另一种初始化方式,将数组按元素顺序进行初始化,而不按行初始化。
二维数组的使用
int array[3][4] = { 1,2,3,4,
5,6,7,8,
9,10,11,12 };
1. 获取数组的行数和列数
利用 sizeof
操作符来计算行数和列数:
// 获取行数
int rows = sizeof(array) / sizeof(array[0]);
cout << rows << endl; // 输出 3
// 获取列数
int cols = sizeof(array[0]) / sizeof(int);
cout << cols << endl; // 输出 4
2. 获取数组中的元素
可以通过索引访问数组中的元素:
cout << array[0][0] << endl; // 输出 1
cout << array[0][1] << endl; // 输出 2
cout << array[2][2] << endl; // 输出 11
3. 初始化所有坑位
如果只初始化了一个值,其他元素会被自动初始化为0:
int array2[3][3] = { 0 };
cout << array2[0][0] << endl; // 输出 0
cout << array2[2][2] << endl; // 输出 0
4. 修改数组中的元素
array2[0][0] = 99;
cout << array2[0][0] << endl; // 输出 99
5. 遍历二维数组
使用嵌套的 for
循环遍历二维数组:
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cout << array[i][j] << endl;
}
}
输出:
1
2
3
4
5
6
7
8
9
10
11
12
6. 增加数组的元素
数组初始化后不能直接添加新的元素,但可以通过搬家操作将数组复制到更大的二维数组中:
int array3[4][5];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
array3[i][j] = array[i][j];
}
}
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cout << array3[i][j] << endl;
}
}
7. 删除数组的元素
删除数组元素时,需要使用搬家方法,将数据搬移到更小的数组容器中,避免越界。
8. 查找数组中的元素
通过双层 for
循环查找某个元素是否存在:
int target = 7;
bool found = false;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
if (array[i][j] == target) {
cout << "元素 " << target << " 在第 " << i << " 行,第 " << j << " 列" << endl;
found = true;
break;
}
}
if (found) break;
}
输出:
元素 7 在第 1 行,第 2 列
在函数中传递二维数组
在函数中传递二维数组时,必须告知编译器该数组的列数。固定写法为:
返回值 函数名( 数组类型 数组名[][列数], int 行数 );
例如:
void test(int array[][4], int rows) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < 4; j++) {
cout << array[i][j] << endl;
}
}
}
test(array, rows);
输出:
1
2
3
4
5
6
7
8
9
10
11
12
14.2 知识点代码
Lesson14_数组_二维数组.cpp
#include <iostream>
using namespace std;
void test(int array[][4], int rows);
int main()
{
std::cout << "二维数组\n";
#pragma region 知识点一 基本概念
//二维数组 是使用两个下标(索引)来确定元素的数组
//两个下标可以理解成 行标 和 列标
//比如矩阵
// 1 2 3
// 4 5 6
// 可以用二维数组 变量名[2][3] 表示
// 好比 两行 三列的数据集合
#pragma endregion
#pragma region 知识点二 二维数组的声明
// 1.变量类型 数组名[行][列];
// 声明一个指定行列容量的二维数组,但是每个房间的值并不确定
// 变量类型 可以是我们学过的 或者 没学过的所有变量类型
int arr[3][4]; //相当于就是分配了3*4=12个内存小房间用于存储int值 目前没有初始化
//因此其中每个房间中的值 是不确定的
// 2.变量类型 数组名[行][列] =
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com