struct [タグ名]{ 型 メンバー名 m1; 型 メンバー名 m2; ... 型 メンバー名 mn; } [変数名,[...]];
タグ名は省略可能であるが、省略すると後で再利用することは不可能であるので省略
しないほうが良い。構造体の詳細をコンパイラーに伝える部分は }
までで終わるが、
ここまでだけでは、実際の構造体変数は確保されない点に注意する必要がある。
}
の後ろに変数名を書いて、初めて、構造体変数が確保される。
確保された構造体変数のメンバー(要素)へのアクセスは、選択演算子 .
を
用いて、タグ名.メンバー名で出来る。
例 struct pen{ char color; int hutosa; } pen1; ... pen1.color = 'b'; pen1.hutosa= 2;
構造体そのものに許される演算は、一括代入、メンバーへのアクセス、アドレス 演算の 3 つのみである。 また、構造体の中に配列が含まれる場合でも、同じ構造体同士では一括代入が 許される。
構造体では常に初期化が許される。この点で、配列とは違う点に注意しなければ ならない。
例 struct pen pen1 = {'b', 2};
初期化のときの、各メンバーへの代入は、メンバーの宣言時の並び順に初期化される ので、メンバーの型に応じた値で初期化することを忘れてはならない。