ошибка: подписанное значение не является ни массивом, ни указателем, ни вектором в C - PullRequest
2 голосов
/ 08 января 2012
the_project.c:73:22: error: subscripted value is neither array nor pointer nor vector 

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

customer_table[my_id][3] = worker_no;

Я объявил массив глобальным следующим образом

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

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

Ответы [ 2 ]

4 голосов
/ 08 января 2012

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

int **customer_table;

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

(см., Например, динамическая память для двумерного массива символов для примеров.)

0 голосов
/ 08 января 2012

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

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

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

int **customer_table;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...