next up previous contents
Next: 2. 演算 Up: 18. 構造体 I Previous: 18. 構造体 I

1. 構造体の宣言

構造体の宣言は以下のように行う。


        struct  [構造体タグ] {
                型 メンバー1;
                型 メンバー2;
                ...
                型 メンバーn;
        }[変数名,...];

構造体であることは、最初に struct を書くことによって示す。 struct の後ろの「構造体タグ」と呼ばれる、新しい構造体の名前は省略 可能であるが、名前が無いと後で利用することは出来ない。従って、なるべく 省略しない方が良い。次に、{ と } でくくられる中に、その構造体に含まれる データの種類とその種類を特定するための「メンバー名」という名前を書く。 } で構造体の宣言は終わりで、その後に、変数名を書けば、その構造体変数が 確保される。


例 1
        struct  pen{
            char color;
            int  hutosa;
        } pen1;

例1では、構造体 pen が宣言されている。構造体 pen は、文字型変数と整数型変数 をメンバーに持ち、メンバーを区別するために、それぞれ color, hutosa と いうメンバー名をつけている。最後に、構造体 pen の変数として、 pen1 という 名前の変数を1個確保している。通常、文字型と整数型ではメモリー上の大きさが 違うことに注意しよう。この構造体 pen は下の図のように考えられる。

\epsfile {file=18fig01}

この変数の確保の宣言の仕方は、整数の時と同じようにみなせ、


        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 を使って、変数を確保している。 このように、構造体の宣言と確保を分けて書くことも可能である。



Noriyo Kanayama