C++如何给二维数组初始化

二维数组初始化

在C++中,二维数组的初始化有两种方式:静态初始化和动态初始化。

静态初始化

静态初始化是指在定义数组时,给数组指定完整的初始值,这种方式适用于确定的数组。示例如下:

int arr[2][3] = {{1,2,3},{4,5,6}};

定义一个2行3列的数组,按行依次输入初始值。若不指定某行的初始值,则默认初始化为0。

动态初始化

动态初始化是指在定义数组时,只给定数组的大小,而初始化的过程在后面再进行。

int row,col; // 行和列数

cin>>row>>col; // 输入行和列数

int **arr = new int*[row]; // 动态申请一维数组

for(int i=0;i

arr[i] = new int[col]; // 每个一维数组都动态申请

}

这里动态申请的是一个二维数组,需要先申请一维数组,再在循环中为每个一维数组动态申请空间,这样就可以完成动态初始化的二维数组。

给二维数组赋值

二维数组的赋值也有两种方式:按元素赋值和按行、列赋值。

按元素赋值

如果知道了每一个位置上的值,可以使用按元素赋值的方式。示例如下:

int arr[2][3];

arr[0][0] = 1;

arr[0][1] = 2;

arr[0][2] = 3;

arr[1][0] = 4;

arr[1][1] = 5;

arr[1][2] = 6;

这里的arr[0][0]代表第一行第一列的元素。

按行、列赋值

如果是重复性的数值,可以使用按行、列赋值的方式,这也是二维数组常用的方式。

int arr[2][3];

for(int i=0;i<2;i++){

for(int j=0;j<3;j++){

arr[i][j] = i*j;

}

}

这里每行的元素都是行数乘以列数再赋值,即第一行元素为0,第二行元素为0,1,2。

完整示例

下面是一个完整的示例,演示了动态初始化、按行、列赋值、遍历和释放内存的过程:

#include<iostream>

using namespace std;

int main(){

int row,col; // 行和列数

cin>>row>>col; // 输入行和列数

int **arr = new int*[row]; // 动态申请一维数组

for(int i=0;i

arr[i] = new int[col]; // 每个一维数组都动态申请

for(int j=0;j

arr[i][j] = i*j; // 按行、列赋值

}

}

// 循环遍历二维数组

for(int i=0;i

for(int j=0;j

cout<

}

cout<

}

// 释放内存

for(int i=0;i

delete[] arr[i];

}

delete[] arr;

return 0;

}

重点注意: 动态申请的内存一定要释放,否则会造成内存泄漏。释放内存的顺序应该是先释放每个动态申请的一维数组,然后再释放最外层的一维数组。

后端开发标签