2
votes
the_project.c:73:22: error: subscripted value is neither array nor pointer nor vector 

it gives the error above and the line 73 is the following.

customer_table[my_id][3] = worker_no;

I declared the array global as follows

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

This line of code is in a function not in main. And I allocate memory for this global array in the main. What may this cause this problem?

2
The "nor vector" part of the error message makes me think you're compiling as C++, not as C. If you want to compile C code, use a C compiler. - Keith Thompson
@KeithThompson i am using gcc - Salih Erikci
Interesting. It's related to a gcc extension. - Keith Thompson

2 Answers

4
votes

You're declaring a pointer-to-int. So cutomer_table[x] is an int, not a pointer. If you need a two-dimensional, dynamically allocated array, you'll need a:

int **customer_table;

and you'll need to be very careful with the allocation.

(See e.g. dynamic memory for 2D char array for examples.)

0
votes

The problem is that customer_table[my_id] is not a pointer or array and hence you cannot use [] on it.

Note that the first dereference using [] is OK since customer_table is a pointer. Once you apply the first [] it becomes an int, though.

Perhaps what you really want to use is

int **customer_table;