二维数组初始化
在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;
}
重点注意: 动态申请的内存一定要释放,否则会造成内存泄漏。释放内存的顺序应该是先释放每个动态申请的一维数组,然后再释放最外层的一维数组。