方法一:申请空间时使用数组指针,分配一个指针数组,将其首地址保存在arr中,在为指针数组的每个元素分配一个数组;释放空间时需要先释放二维数组中每个元素指向的数组,在释放该指针数组;代码如下:
int rows ;
cin>>rows;
int cols ;
cin>>cols;
int **arr = new int*[rows];//先使一个二级指针指向数组指针的地址
for(int i = 0 ; i < rows ;++i )
{
arr[i] = new int [cols]();//为一级指针分配地址
}
for(int i = 0 ; i < rows ;++i)
{
for( int j = 0 ; j < cols ;++j)//为数组填充元素
{
cin>>arr[i][j];
}
}
//释放空间
for(int i = 0; i < rows ;++i)
{
delete [cols]arr[i];//先释放二维数组中每个元素指向的数组
arr[i] = NULL;
}
delete [rows]arr;//在释放该指针数组;
arr = NULL;
方法二:利用STL库中的容器vector创建二维数组,思想与上述无差别,代码如下:
int row;
cin>>row;
int col;
cin>>col;
vector<vector<int>> array(row);
for(int i = 0 ; i < row ; ++i)
{
array[i].resize(col);
}
for(int i = 0 ; i < row ;++i)
{
for(int j = 0 ; j < col ;++j)
{
cin>>array[i][j];
}
}