【问题标题】:Error using malloc for multiple 2D arrays对多个二维数组使用 malloc 时出错
【发布时间】:2015-04-22 02:37:26
【问题描述】:

我有以下代码段:

        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:语法错误:缺少 ';'在“类型”之前

错误 C2065:“endpt2”:未声明的标识符

错误 C2109:下标需要数组或指针类型

错误指向带有箭头的线。如果我试图在给定文件中分配多个二维数组,我只会得到这个。错误总是发生在第二个定义的开头。关于我为什么会收到此编译器错误的任何想法。感谢您的帮助。

【问题讨论】:

    标签: c arrays malloc


    【解决方案1】:

    在 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

    【讨论】:

      猜你喜欢
      • 2018-03-20
      • 2011-10-30
      • 1970-01-01
      • 2020-01-29
      • 2016-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多