2012-01-08 3 views
2
the_project.c:73:22: error: subscripted value is neither array nor pointer nor vector 

он дает ошибку выше, а строка 73 - следующая.ошибка: индексированное значение не является ни массивом, ни указателем, ни вектором в C

customer_table[my_id][3] = worker_no; 

я объявлен массив глобальной следующим

int *customer_table;  //All the info about the customer 

Эта строка кода находится в функции не в главном. И я выделяю память для этого глобального массива в основном. Что может послужить причиной этой проблемы?

+0

«ни вектор» часть сообщения об ошибке заставляет меня думать, что вы собираете, как C++, а не как C. Если вы хотите скомпилировать код C, используйте C компилятор. –

+0

@KeithThompson Я использую gcc –

+2

Интересно. Это связано с расширением [gcc] (http://gcc.gnu.org/onlinedocs/gcc-4.6.2/gcc/Vector-Extensions.html). –

ответ

4

Вы объявляя pointer-to-int. Итак, cutomer_table[x] - это int, а не указатель. Если вам нужен двумерный, динамически выделяемый массив, вам понадобится:

int **customer_table; 

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

(смотри, например dynamic memory for 2D char array для примеров.)

0

Проблема в том, что customer_table[my_id] не является указателем или массивом и, следовательно, вы не можете использовать [].

Обратите внимание, что первое разыменование с использованием [] в порядке, так как customer_table - указатель. Тем не менее, если вы применили первый [], он становится int.

Возможно, что вы действительно хотите использовать

int **customer_table; 
Смежные вопросы

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