我的代码有问题.我有一些类的输入,nmax和mmax.这些在标题中定义为
int nmax;
int mmax;
Run Code Online (Sandbox Code Playgroud)
然后我有一些数组,在标题中定义为
double* Nline;
double** NMline;
Run Code Online (Sandbox Code Playgroud)
然后我想在主程序中分配它们.首先,我从输入中分配nmax和max值
nmax = nmax_in;
mmax = mmax_in;
Run Code Online (Sandbox Code Playgroud)
然后我分配数组
Nline = new double [nmax];
NMline = new double [nmax][mmax];
Run Code Online (Sandbox Code Playgroud)
问题是,1D阵列是这样分配的.但是2D数组没有 - 编译器写道:表达式必须具有常量值
为什么分配了NLine而NMline没有?
我理解,但我不知道如何在我的程序中这样做,为什么1D数组这个分配是好的.非常感谢您的帮助
double** NMline;
Run Code Online (Sandbox Code Playgroud)
将声明指针指针数组,它不会声明2D数组.您需要首先为指针数组(指向行的指针)分配数据:
NMline = new double*[nmax];
Run Code Online (Sandbox Code Playgroud)
然后初始化每一行:
for(int i = 0; i < nmax; i++)
NMline[i] = new double[mmax];
Run Code Online (Sandbox Code Playgroud)
不要忘记先删除所有行,然后删除NMline自身:
for(int i = 0; i < nmax; i++)
delete [] NMline[i];
delete [] NMline;
Run Code Online (Sandbox Code Playgroud)