0

我尝试使用外部结构,但是当我编译我的 c 代码时,我收到了这条消息:

subscripted value is neither array nor pointer nor vector.

为什么?

消息传递.h

struct Request {
    struct {
        u_int data_len;
        float *data_val;
    } data;
    bool_t last;
};
typedef struct Request Request;

主程序

#include "messaggio.h"

int main(void){
 struct Request x;
 x.data[0] = 4.6;
 printf("%f\n",x.data[0]);
 return 0;
}
4

3 回答 3

2

x.data是一个结构,所以你不能使用[]它。也许你想要x.data.data_val[0]

试试这个代码:

struct Request x;
x.data.data_len = 5; // initialize the length, use any value you need
x.data.data_val = (float *) malloc(x.data.data_len * sizeof(float));
x.data.data_val[0] = 4.6
于 2013-07-04T13:31:01.813 回答
0

x.data是一个结构而不是一个数组。

如果x.data.data_val[0]那是您要访问的内容,请使用。但是,您没有为data_val. 我相信您正在尝试分配一个数字,并且data_len需要分配内存来保存.data_lendata_val

于 2013-07-04T13:30:51.263 回答
0

struct Request#data 的类型是匿名 struct { u_int, float } 而不是数组。因此,您不能在其上使用 [] 运算符。

你可能想做:

x.data.data_val[0]
于 2013-07-04T13:31:28.683 回答