【问题标题】:error: subscripted value is neither array nor pointer nor vector in C错误:下标值既不是数组也不是指针也不是C中的向量
【发布时间】:2012-01-08 12:07:59
【问题描述】:
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

这行代码在一个不在 main 中的函数中。 我主要为这个全局数组分配内存。 这可能导致此问题的原因是什么?

【问题讨论】:

  • 错误消息中的“nor vector”部分让我觉得您正在编译为 C++,而不是 C。如果您想编译 C 代码,请使用 C 编译器。
  • @KeithThompson 我正在使用 gcc
  • 有趣。它与gcc extension 相关。

标签: c arrays pointers


【解决方案1】:

您声明的是pointer-to-int。所以cutomer_table[x] 是一个int,而不是一个指针。如果你需要一个二维的、动态分配的数组,你需要一个:

int **customer_table;

您需要非常小心分配。

(例如,参见 dynamic memory for 2D char array。)

【讨论】:

    【解决方案2】:

    问题在于customer_table[my_id] 不是指针或数组,因此您不能在其上使用[]

    请注意,使用[] 的第一次取消引用是可以的,因为customer_table 是一个指针。但是,一旦您应用了第一个 [],它就会变成 int

    也许你真正想要使用的是

    int **customer_table;
    

    【讨论】:

      猜你喜欢
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多