2009-04-18 16 views
5

は誰指定された初期化子について次の行を説明していただけます。指定初期化子と省略要素

初期化子リストではなくのみ端よりも、どこにでも集計で宣言された要素を省略することができます。

答えて

2

お試しくださいlink

考え方は、初期化時に構造体のような複雑な型のメンバを参照できるようにすることです。例えば。

struct s { 
    int a, b; 
}; 

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

柔軟性は、値を指定するときに順序に依存しないことから得られます。これはC99標準に追加されたものであり、C99を完全にサポートしていないコンパイラ(または旧バージョンの標準をサポート)ではサポートされていない可能性があることに注意してください。

8

は、あなたは、従来の初期化子リストを使用する場合は、要素の値が順に割り当てられているので、あなたは、この構造体を持っている場合:

foo_t value = { 7 }; 

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

この初期化子は、明示的にaないb割り当て

省略可能な要素は、最後に宣言された要素のみです。

usi指定された初期化子をngの、あなたはどこにも宣言されている要素を省略することができます。

foo_t value = { .b = 8 }; 

をそうvalue.aための初期化子は、構造体の最初の値であるにもかかわらず、省略されています。

関連する問題