2009-04-18 36 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初始化劑,儘管是在結構中的第一個值。