静态的分配一个二维数组很简单,如: int[3][4];
但是动态分配二维数组有点复杂,不能写成:double **arr=new double[m][n];
可以用如下的函数动态分配二维数组:
int ** dyn_di(int m,int n)
{
int *arr = new int[m*n];//分配存储数据的单元
int **a = new int* [m];//分配指针单元
for(int i= 0; i<m;i++)
{
a[i]= arr+i*n; //将每行的指针分别赋给a中的每个元素。这样a[i]就指向了“指向第i行的指针”。
for(int j=0;j<n;j++)
a[i][i]=0; //初始化每个数据单元
}
}
如图:
二维数组的释放:
void dyn_2i(int **a)
{
delete [] *a;//释放每个数据单元,*a相当于上面的arr,所以相当于是执行delete [] arr;
delete [] a;// 释放了每个指针单元。
}