next up previous contents
Next: 19.2 演算 Up: 19. 構造体 I Previous: 19. 構造体 I

19.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=19fig01}

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

        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