我想理解为什么使用这个结构定义,我们可以直接使用名称event
为结构成员赋值。我见过其他定义,其中struct
关键字用于分配值。
struct {
int eventNum;
int eventType;
} event;
void function() {
event.eventNum = 10;
}
答案 0 :(得分:4)
struct Name {int stuff; int data;} variable;
这与int variable;
相同,所以,这是一个普通变量,但是有一个复杂的,或者在评论中指出derived类型。 / p>
答案 1 :(得分:4)
在您的代码片段中,event
是未命名结构的实例,是未初始化的全局变量。在全局范围内,未初始化的对象将所有成员初始化为其类型的零值。
函数function()
可以使用event
名称来引用此对象,并为其中一个成员分配值:event.eventNum = 10;
。
您可能已经看到过这样的初始化结构定义:
struct {
int eventNum;
int eventType;
} event = { 10, 0 };
或C99特定的initalizers如下:
struct {
int eventNum;
int eventType;
} event = { .eventNum = 10 };
这些定义可以在全局或局部范围内发生,并定义初始化对象event
。
答案 2 :(得分:-1)
你声明全局变量event
哪个类型是"无标签" 或 "不完整" (这是语言律师如何正确调用它的问题)结构struct { int ventNum; int eventType; }
。因为它是全局变量,所以它在整个程序的范围内都可见,包括你的函数