第15章  構造体


今回は、構造体(structure)です。構造体というとなにやら難しそうに聞こえますが そうでもないです。よく例に出されるのが、社員名簿です。ある会社の社員のデータについて 考えます。社員Aについてのデータとしては、名前、年齢、住所、電話番号、部署、給与など などいろいろなデータが考えられます。

会社の人事部じゃないんだから、そんなことどーでもいい!

はい。これは、たとえばの例でたいていの入門書にこの例が出ているので 説明の都合上書いただけです。これらのデータをたとえば、nameA,ageA,addressA,telA.... などという変数に入れていったとします。Bさんや、CさんについてもnameB,nameC...などと 変数を作っていくと、変数ばかり増えて収拾がつかなくなってしまいます。

そこで、構造体という物が必要になってきます。

struct 構造体タグ { int x; //構造体メンバー int y; char z;・・・・・ }構造体変数1,構造体変数2・・・;

上のように宣言します。宣言の時は、構造体変数を 書かなくてもよいです。タグも省略できます。 (あとから変数のみを宣言できます。) これじゃよくわからん! という方のために、もう少し詳しく解説します。

struct shain { int age; char name[32]; char sex; }a, b, c;

これは、社員(shain)構造体をフルに宣言した物です。社員a,b,cについて、 年齢、名前、性別を格納することができます。たとえば、社員aの年齢は、 a.ageで表すことができます。このばあい、shainを 構造体テンプレート(template)と呼ぶことがあります。 要するに、鋳型です。鋳型を元に あとからいくらでも同じ形の物を製造できるからです。

struct shain d;

と、いう風にあとから、社員dの構造体変数を追加宣言することもできます。 また、構造体テンプレートを省略して宣言してもかまいません。ただしこの場合 あとから、構造体変数を追加宣言できなくなります。また、構造体変数を省略して あとから宣言することもできます。

//関数外に宣言 struct shain{ int age; char name[32]; char sex; }; main() { ...... sturct shain a, b, c, d;//int x, y, z;というような感じで宣言 ..... }

宣言する場所に気をつけてください。関数内で宣言すればその中で しか参照することができません。たとえば、テンプレートを グローバルの位置に、構造体変数を関数内で宣言すると、この構造体 変数は、その関数内でしか参照できません。別な関数で同じ名前の 構造体変数を宣言しても、それらは別の変数となります。これは、 一般の変数と同じです。(この意味の分からない方は、次の例を よく見てください。)


このプログラムを実行すると次のようになります。 どうしてこのようになるか、はっきりわからない方は もう少し後の章で「変数のスコープ」というのを 予定しているのでそのとき理解してください。 (ここのHPは、何でも後回しにしてしまいます)



[Index][総合Index] [Previous Chapter] [Next Chapter]

Update Nov/05/1996 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。