14.二维数组

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

×

喜欢就点赞,疼爱就打赏