我的代码有问题。我为班级提供了一些输入,即nmax和mmax。这些在标头中定义为
int nmax;
int mmax;
然后我有一些数组,在header中定义为
double* Nline;
double** NMline;
然后我想在主程序中分配它们。首先,我将输入中的值分配给nmax和max
nmax = nmax_in;
mmax = mmax_in;
然后我分配数组
Nline = new double [nmax];
NMline = new double [nmax][mmax];
问题是,这种方式分配了1D阵列。但是2D数组不是-编译器写道:表达式必须具有常量值
为什么要分配NLine而不能分配NMline?
我了解但我不知道如何在程序中执行此操作,以及为什么对于1D数组,此分配是可以的。非常感谢您的帮助
double** NMline;
将声明指向指针数组的指针,而不声明2D数组。您需要首先为指针数组(指向行的指针)分配数据:
NMline = new double*[nmax];
然后初始化每一行:
for(int i = 0; i < nmax; i++)
NMline[i] = new double[mmax];
不要忘记先删除所有行,然后删除NMline
本身:
for(int i = 0; i < nmax; i++)
delete [] NMline[i];
delete [] NMline;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句