2009-04-18 30 views

回答

2

试试这个link

这个想法是能够在初始化过程中引用类似结构的复杂类型的成员。例如。

struct s { 
    int a, b; 
}; 

int main() { 
    struct s = { .b = 42, .a = -42 }; 
    return 0; 
} 

灵活性是指定值时从顺序无关获得的。请记住,这已被添加到C99标准中,并且可能不被完全不支持C99的编译器支持(或支持较早版本的标准)。

8

如果您使用的是传统的初始化器列表,对于元素值分配的顺序,因此,如果你有这样的结构:

typedef struct _foo { 
    int a; 
    int b; 
} foo_t; 

那么这个初始化器明确分配a而不是b

foo_t value = { 7 }; 

没有指定的初始值,唯一可以省略的元素是最后声明的元素

usi纳克指定initialisers,你可以省略任何地方都声明的元素:

foo_t value = { .b = 8 }; 

所以省略了value.a初始化剂,尽管是在结构中的第一个值。