1.C++中 使用数组指针,分配一个指针数组,将其首地址保存在b中,然后再为指针数组的每个元素分配一个数组
int **b=new int*[row]; //分配一个指针数组,将其首地址保存在b中
for(i=0;i<row;i++) //为指针数组的每个元素分配一个数组
b[i]=new int[col];
该方法定义的动态二维数组的释放需先释放指针数组的每个元素指向的数组,然后再释放该指针数组:
for(i=0;i<row;i++)
{
delete [col]b[i];
b[i]=NULL;
}
delete [row]b;
int **b=new int*[row]; //分配一个指针数组,将其首地址保存在b中
for(i=0;i<row;i++) //为指针数组的每个元素分配一个数组
b[i]=new int[col];
该方法定义的动态二维数组的释放需先释放指针数组的每个元素指向的数组,然后再释放该指针数组:
for(i=0;i<row;i++)
{
delete [col]b[i];
b[i]=NULL;
}
delete [row]b;
b=NULL;
例:
//动态创建二维数组
void main(){
int col,row;
cin>>row>>col;
//创建空间
int **p=new int *[row];
for(int i=0;i<row;i++)
{
p[i]=new int[col];
for(int j=0;j<col;j++)
{
p[i][j]=rand()*10;
}
}
//随机赋值
for(int i=0;i<row;i++)
{
for(int j=0;j<col;j++)
cout<<p[i][j]<<'\t';
cout<<endl;
}
cout<<endl;
system("pause");
//释放内存
for(int i=0;i<row;i++)
{
delete []p[i];
p[i]=NULL;
}
delete []p;
p=NULL;
return;
}
2、C++中用new动态创建二维数组的格式一般是这样:
TYPE (*p)[col] = new TYPE [][col];
其中,TYPE是某种类型,N是二维数组的列数。采用这种格式,列数必须指出,而行数无需指定。在这里,p的类型是TYPE*[N],即是指向一个有N列元素数组的指针。
3、使用vector容器
vector<vector<int> > a(row,vector<int>(column));