2014-11-25 3 views
-2

Я пытаюсь напечатать многомерный массив в C, но после этого я не могу этого сделать.Ошибка «Подстрочное значение не является ни массивом, ни указателем, ни вектором» по параметру в моем fuction, который явно является массивом

Функция:

void vypisArray(float arrayX[],int rozmeryX[]){ 

    for (int i=0;i<rozmeryX[0];i++) { 
     for (int j=0; j < rozmeryX[1]; j++) { 
      printf("%f ",arrayX[i][j]);  //line 40 --error here 
     } 
     printf("\n"); 
    } 
    printf("\n"); 


} 

и использование:

vypisArray(arrayX,rozmeryX); 

Ожидаемый результат в основном распечатку любого многомерного массива с соответствующим форматированием в консоли.

Я что-то пропустил?, Может быть путаница с моей стороны shooed Я использую указатели для ссылки на свой массив, а затем просто передаю его в свою функцию как простой параметр многомерного массива?

Вот журнал ошибок:

In function 'vypisArray': 
40 35  [Error] subscripted value is neither array nor pointer nor vector 
      In function 'skenujArray': 
62 25  [Error] subscripted value is neither array nor pointer nor vector 
    In function 'main': 
137 4  [Warning] passing argument 1 of 'skenujArray' from incompatible pointer type [enabled by default] 
55 6  [Note] expected 'float *' but argument is of type 'float (*)[(sizetype)(rozmeryA[1])]' 
138 4  [Warning] passing argument 1 of 'skenujArray' from incompatible pointer type [enabled by default] 
55 6  [Note] expected 'float *' but argument is of type 'float (*)[(sizetype)(rozmeryB[1])]' 

Edit: проблема решена, я был смущен о том, как указать MultiDim массивов в функции C.

void vypisArray(int rozmeryX[],float arrayX[][rozmeryX[1]]) // code works 
+0

Ваш параметр, который является «явно массив», на самом деле, а не массив, а указатель. – chris

+0

Можете ли вы показать нам, как вы вызываете функцию, то есть определение данных, которые вы хотели передать как массив? – Christophe

+0

Проблема @Christophe исправлена, я знаю, что массив [] будет достаточным, чтобы указать, что я работаю с многомерным массивом, вызывать в определении моей функции, я имел ошибку, когда я делал [] [] (вроде бы немой думать, я знаю) bud im новый для c, поэтому я уточнил еще и прокомментировал мое определение прототипа функции, и все работает так, как это было :). –

ответ

3
float arrayX[] 

это не многомерный массив, вот только массив поплавки

+4

Фактически, поскольку он объявлен как параметр, это указатель, а не массив. (Оператор индексирования '[]' применим к массивам.) –

+0

@Keith Nicholas Я знаю keith, любая идея, почему у меня была ошибка, когда я определял свою функцию с параметром arrayX [] []? Именно по этой причине я использовал обычный массив, а не multi dim, я удалил определение и просто пошел только для объявления функции, где я уточнил, что я работаю с многомерным массивом. –

0

вы пытаетесь получить доступ к одной одномерный массив в двумерном образом. а не делать

printf("%f ",arrayX[i][j]); 

сделать

printf("%f ",arrayX[i]); 
Смежные вопросы