谁能给我分析一下这段c++动态矩阵代码(答好追加分)

来源:百度知道 编辑:UC知道 时间:2024/07/06 16:04:07
double *p;
int m,n, i, j;
cout<<"Please define one Matrix"<<endl;
cin>>m>>n;
double **a = new double*[m]; //**a什么意思
cout<<"now enter the Matrix A["<<m<<"]["<<n<<"]"<<endl;
for(i = 0; i <n; i++)
{
a[i] = new double[n];
for(j=0;j<n;j++)
cin>>a[i][j];
}
最后要delete,请教怎么delete

你这是要动态地生成二维数组,a是指向二维数组的指针,也就是说a可以是一个数组,它的每一个元素又可以指向一个动态生成的一维数组,我可能说得不太清楚,这把它改成这样子:
int m,n;
cin>>n>>m;
int **p;
p=new int *[n];
for(int i=0;i<n;i++)
{
p[i]=new int[m];
}
//生成一 个二维的指针

for(i=0;i<n;i++)
for(int j=0;j<m;j++)
cin>>p[i][j];
//当成二维的那么用
至于delete,你可以delete []a,也可以delete[0];
效果是一样的;

你那上面有一个错误,在第一重for循环,i的上界应该是m.

**a 双重指针,和二维数组类似,这样做可以实现你的矩阵了
delete *[] a