其中代码包含W[] 编译器不知道该怎么做。
必须在创建变量时进行初始化。 (而变量W[1] 将只包含 1 个数据实例,而不是 2 个实例。
一般来说,最好将结构定义与该结构的任何实例分开。
所以,首先定义结构体:
struct student
{
char name[100];
int id;
char *department;
struct result
{
float gpa;
char grade;
};
};
然后声明结构的任何实例:
struct student R[1];
struct student W[] =
{
{"Saud Farooqui",137,"Electronics",3.05,'A'},
{"Talha Farooqui",129,"Civil",3.5,"A+"}
};
顺便说一句:通常最好不要尝试将所有内容都挤在一行代码中
为清楚起见,我建议为嵌入式结构包括内部大括号集,如下所示:
struct student W[] =
{
{"Saud Farooqui",137,"Electronics",{3.05,'A'}},
{"Talha Farooqui",129,"Civil",{3.5,"A+"}}
};
不过,还有一个问题,就是数据
此字段char grade; 被声明为单个字符;但是,“Talha”的数据显示了一个字符数组 "A+"
要处理该字符数组,首先需要将结构定义更改为:
struct student
{
char name[100];
int id;
char *department;
struct result
{
float gpa;
char grade[3];
};
};
然后将数据修改为“等级”字段始终具有任何数组:
struct student W[] =
{
{"Saud Farooqui",137,"Electronics",{3.05,"A"}},
{"Talha Farooqui",129,"Civil",{3.5,"A+"}}
};
请注意,“等级”字段的数据现在始终是一个数组。