構造体の宣言は以下のように行う。
struct [構造体タグ] { 型 メンバー1; 型 メンバー2; ... 型 メンバーn; }[変数名,...]; |
構造体であることは、最初に struct を書くことによって示す。 struct の後ろの「構造体タグ」と呼ばれる、新しい構造体の名前は省略 可能であるが、名前が無いと後で利用することは出来ない。従って、なるべく 省略しない方が良い。次に、{ と } でくくられる中に、その構造体に含まれる データの種類とその種類を特定するための「メンバー名」という名前を書く。 } で構造体の宣言は終わりで、その後に、変数名を書けば、その構造体変数が 確保される。
例 1 struct pen{ char color; int hutosa; } pen1; |
例1では、構造体 pen が宣言されている。構造体 pen は、文字型変数と整数型変数 をメンバーに持ち、メンバーを区別するために、それぞれ color, hutosa と いうメンバー名をつけている。最後に、構造体 pen の変数として、pen1 という 名前の変数を1個確保している。通常、文字型と整数型ではメモリー上の大きさが 違うことに注意しよう。この構造体 pen は下の図のように考えられる。
この変数の確保の宣言の仕方は、整数の時と同じようにみなせ、
int a;
の int のところが、struct pen {...} に置き換えたものだと思えば 良い。
例 2 struct point{ float x; float y; } p1, p2; |
この例では、構造体 point が宣言されている。構造体 point は、実数変数を2つ メンバーに持ち、それぞれのメンバー名は、x, y である。そして、構造体 point の変数として、p1, p2 という2つの変数が確保されている。
例 3 struct point{ float x; float y; }; |
例 3 は、例 2 とほぼ同じだが、変数の確保がされていない。従って、構造体 point が宣言されただけで、実際には、構造体 point 型の変数は存在しない。 つまり、新しい型が定義されたのとほぼ同じである。
例 4 struct point{ float x; float y; }; main(){ struct point p1, p2; |
例 4 では、まず例 3 と同じく構造体 point の宣言を行い、変数は確保せず、 main() の中で、先に宣言した構造体 point を使って、変数を確保している。 このように、構造体の宣言と確保を分けて書くことも可能である。