将malloc用于多个2D数组时出错

时间:2015-04-21 18:17:25

标签: c arrays malloc

我有以下代码段:

        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数组,我只会得到这个。错误始终发生在第二个定义的开头。关于为什么我得到这个编译器错误的任何想法。谢谢你的帮助。

1 个答案:

答案 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