2015-04-21 2 views
0

У меня есть следующий фрагмент кода:Ошибка использования таНос для нескольких 2D массивов

 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); 

Я получаю следующее сообщение об ошибке при компиляции в Microsoft Visual Studio 2010 на Windows 7:

ошибка C2143: синтаксическая ошибка: отсутствует ';' перед «» типа

ошибки C2065: «endpt2»: необъявленный идентификатор

ошибка C2109: нижний индекс требует массив или типа указателя

Точки ошибок в линию со стрелкой. Я получаю это только в том случае, если пытаюсь выделить более одного 2D-массива в заданном файле. Ошибка всегда возникает в начале второго определения. Любые идеи относительно того, почему я получаю эту ошибку компилятора. Спасибо за помощь.

ответ

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); 

Кроме того, нет необходимости, чтобы бросить malloc в С.

Смежные вопросы