第十四章 構造体


構造体                                                                                                               
構造体は、いくつかの変数を一つのグループにまとめて扱うことができます。
次の例を見てください。

<構造体>
#include<stdio.h>
main()
{
    struct POINT /* POINTという型を作る */
    {
        int x;
        int y;
    };
    struct POINT a; /* 自分で作ったPOINT型 */
    a.x=2;
    a.y=5;
    printf("x=%d y=%d\n",a.x,a.y);
}
<実行結果>
x=2 y=5

まず、構造体の型を作ります。この型は int ,double ,char とかと同じ意味です。
struct POINT
{
};
の { } 内に作った変数が一つのグループとなります。
グループにまとめられた変数をメンバーと呼びます。

最初についている struct は構造体であることを表しており、
型を定義する機能を持っています。

型名 POINT は任意です。別に大文字でないと駄目というわけでもありません。
できれば、何のグループかわかりやすくした方がいいです。

次に、stuct POINT a; で、変数 a を自作した構造体型で宣言しています。

構造体の各メンバーを使うには、例えば a.x というように、
“a というグループ内の変数 x ”みたいな使い方をします。

構造体とポインタ
                                                                                              
構造体変数をポインタにすると、メンバーへのアクセスの仕方が
a.x から a->x と変わります。

<構造体とポインタ>
#include<stdio.h>
main()
{
    struct POINT /* POINTという型を作る */
    {
        int x;
        int y;
    };
    struct POINT a,*b; /* 自分で作ったPOINT型 */
    a.x=2;
    a.y=5;
    b=&a;/* bへaのアドレスを代入 */
    printf("x=%d y=%d\n",b->x,b->y);
}
<実行結果>
x=2 y=5

<構造体>のプログラムと異なるところは、a.x から a->x へ変わっただけで、  
アドレスの代入の仕方も、ポインタと変わりません。

<前に戻る  |目次|  次へ進む>