我有以下代码段:
int i;
double** endpt1 = (double**)malloc(sizeof(double*)*(MAXVAR+1));
for (i=0; i<(MAXVAR+1); i++)
endpt1[i] = (double*)malloc(sizeof(double)*MAXFILES);
--> double** endpt2 = (double**)malloc(sizeof(double*)*(MAXVAR+1));
for (i=0; i<(MAXVAR+1); i++)
endpt2[i] = (double*)malloc(sizeof(double)*MAXFILES);
在Windows 7上的Microsoft Visual Studio 2010中编译时出现以下错误:
错误C2143:语法错误:缺少&#39;;&#39;在&#39;键入&#39;
之前错误C2065:&#39; endpt2&#39;:未声明的标识符
错误C2109:下标需要数组或指针类型
错误指向带箭头的行。如果我试图在给定文件中分配多个2D数组,我只会得到这个。错误始终发生在第二个定义的开头。关于为什么我得到这个编译器错误的任何想法。谢谢你的帮助。
答案 0 :(得分:4)
在C(C89,无论如何)中,变量在函数的顶部声明。使用:
int i;
double **endpt1;
double **endpt2;
endpt1 = malloc(sizeof(double*)*(MAXVAR+1));
for (i=0; i<(MAXVAR+1); i++)
endpt1[i] = malloc(sizeof(double)*MAXFILES);
endpt2 = malloc(sizeof(double*)*(MAXVAR+1));
for (i=0; i<(MAXVAR+1); i++)
endpt2[i] = malloc(sizeof(double)*MAXFILES);
此外,无需在C中投射malloc
。