struct的struct定义和设置成员

时间:2017-08-13 19:33:34

标签: c

我想理解为什么使用这个结构定义,我们可以直接使用名称event为结构成员赋值。我见过其他定义,其中struct关键字用于分配值。

struct {
    int eventNum;
    int eventType;
} event;

void function() {
    event.eventNum = 10; 
}

3 个答案:

答案 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; }。因为它是全局变量,所以它在整个程序的范围内都可见,包括你的函数