C++ 如何给double型二维数组动态初始化

我要建立一个double型的二维数组,行数确定,列数为一个可得到的变量。

第1个回答  2013-01-28
double **array;
array = new double*[row];
for (int i = 0; i < row; ++i){
array[i] = new double[col];
}

其中row为行数,col为列数
第2个回答  推荐于2017-11-25
C++中用new动态创建二维数组的格式一般是这样:
TYPE (*p)[N] = new TYPE [][N];
其中,TYPE是某种类型,N是二维数组的列数。采用这种格式,列数必须指出,而行数无需指定。在这里,p的类型是TYPE*[N],即是指向一个有N列元素数组的指针。
还有一种方法,可以不指定数组的列数:
int **p;
p = new int*[10]; //注意,int*[10]表示一个有10个元素的指针数组
for (int i = 0; i != 10; ++i)
{
p[i] = new int[5];
}
这里是将p作为一个指向指针的指针,它指向一个包含10个元素的指针数组,并且每个元素指向一个有5个元素的数组,这样就构建了一个10行5列的数组。
当数组使用完毕,释放空间的代码是:
for(int i = 0; i != 5; i++)
{
delete[] p[i];
}
delete[] p;
处理二维数组,可以用降维或是二维法。
降维法是用一位数组来接受二维数组,将二维元素的首地址&a[0][0]作为参数,传递给函数,函数用int *接受。
二维法就直接用二维数组来接受,但是需要指定列数。追问

谢谢,能不能一个二维数组中,第一列的数和第二列相加,得到的结果赋给一个一维数组?

追答

那肯定能啊,不管是什么样的数组,每一个元素都是一个单独的数据

追问

p[i] = new int[5];

这里这个5 能不能换成变量,因为我要先取得listcontrol的行数,然后再根据这个行数确定这个二维数组有多少列?

追答

不能,应为new int[5]定义在堆上,编译的时候他又应该有值,而你的listcontrol的行数是在栈上,运行时才有值,会报错的

本回答被提问者采纳
相似回答