2016-04-04 13 views
2

私はC言語を勉強していますが、私が出会ったこのstuctについては混乱していますが、単純に構造体配列を作成するのは簡単です。構造体の終わりのC配列の初期化

struct myStruct 
{ 
    char *name; 
    int id; 
} myList[] = { 
    {"bob", 1}, 
    {"joe", 2} 
}; 

struct myStruct 
{ 
    char *name; 
    int id; 
}; 
struct myStruct myList[] = { 
    {"bob", 1}, 
    {"joe", 2} 
}; 

それとも私が間違っていると同じですか?

+2

と類似していないのですか?そうでなければ、それは同等です。しかし、 'struct'定義の後のセミコロンを忘れないでください。 – Downvoter

+0

私にとっては、 '-std = c11'フラグで' gcc'をコンパイルしません。これは標準的なものではないようです。 – blazs

+2

'(" bob "、1)'ではなく、 '{" bob "、1}'でしょう。 –

答えて

2

はい、同じです。

struct { 
    char *name; 
    int id; 
} myList[] = { 
    {"bob", 1}, 
    {"joe", 2} 
}; 
+0

なぜ私はそれをしたいですか? – BarryBones41

+0

@ BarryBones41時には、構造体のタグ名を必要としないこともあります。例えば、他の場所で同じ構造体を宣言していない場合や、 'struct'自体がファイルに対してローカルな場合(静的な場合)、それが宣言されている関数のローカルです。 – dasblinkenlight

2

はい:あなたのstruct匿名の種類を維持したいと考えたときに最初の構文は、状況に有用です。彼らは同じです。それは '1'と '同じ(1、 "ボブ") `

int i = 1; 

int i; 
i = 1; 
関連する問題