C++菜鸟送分问题1

来源:百度知道 编辑:UC知道 时间:2024/05/15 06:43:01
一个程序片段,输入一个d1行d2列的动态数组:
#include <iostream.h>
int main()
{
int d1,d2;
cin>>d1>>d2;
int **m=new int* [d1];//解释一下这一句,为什么int **m
int i,j;
for (i=0;i<d1;i++)
m[i]=new int[d1];
cout<<"Enter"<<d1<<"rows of"<<d2<<"integers each:\n";
for (i=0;i<d1;i++)
for(j=0;j<d2;j++)
cin>>m[i][j];
.
.
.

d1行d2行的二维数组就相当于长度为d1的一维数组,其数组成员是长度为d2的一维数组.所以要先创建一个长度为d1的一维数组,因为数组成员也是一维数组,所以是new int *[d1];加了个指针(*),而指向一维数组的指针当然还要再加个*,所以是int **m;

int **m是指针,可以理解成为(int *)的指针,也就是(int *) *类型的。
要是不好理解,可以把(int *)看成一种类型,假设为type,那么就是type * m = new type[d1],再把type换成(int *)