C:struct的数组(包含int和另一个struct的另一个数组)

时间:2011-06-10 08:11:20

标签: c arrays struct

struct dataStruct {     const char* s;     int num; }; 

struct Final_struct {     int n;     dataStruct a[]; }; 

现在当我尝试初始化Final_struct时出现问题:

const Final_struct Example[]= {
                                {100, { {"age", 20}, {"iq", 120}, {"bmi",26} } },
                                {100, { {"age", 36}, {"iq", 145}, {"bmi",22} }}
};

这是一个c代码,当我尝试编译时会给出编译错误:

Fields of the object can not have arrrays of size 0

有什么建议吗?

谢谢。

6 个答案:

答案 0 :(得分:5)

dataStruct a[]将结构的成员定义为大小为0的数组。这几乎没用。您需要在struct的定义中指定其大小,因为编译器需要提前知道整个struct的大小。

或者,您只需将字段声明为dataStruct *a,然后数组本身就不会包含在struct中。

答案 1 :(得分:1)

如果这是C,那么string是什么?为什么你希望能够从看起来像其他变量的东西初始化它?

const char *尝试s,并从引用的字符串文字进行初始化。

答案 2 :(得分:0)

你忘记了字符串的引用了吗?

“年龄”

答案 3 :(得分:0)

您是否尝试在字符串常量周围加上双引号?

答案 4 :(得分:0)

  

有什么建议吗?

尝试:

/* note the explicit array size for a[] */
struct Final_struct {     int n;     struct dataStruct a[3]; };

答案 5 :(得分:0)

在名为Final_struct的结构中声明的数组'a'应该具有大小。如果知道该变量的大小,编译器就无法为该变量分配内存。所以你应该首先分配大小...