1999年度のプログラミングIIIの授業は終りました。 この授業のページは参照用の資料として保存しているものです。最新の情報・資料は江上の授業ページで。
[EGAMIX トップ] > [授業のページ] > [1999年度 プログラミングIII] > [授業ノート・資料]

[Back] [Index]
 
構造体の理解

 
例題
以下はさきほど例題として使用したプログラムである。同じプログラムを3つの違った変数(データ構造)でもって表現してみよう。
 
通常変数を用いて
 
#include <stdio.h>

main()
{
    int  yy;
    int  mm;
    int  dd;

    yy = 1998;     /* 変数 yy に代入 */
    mm = 11;
    dd = 19;

    printf("%d 年 %d 月 %d 日\n", yy, mm, dd);
}

 
配列を用いて
 
#include <stdio.h>

main()
{
    int  d[3];

    d[0] = 1998;    /* 配列変数 d の 1番目の要素に代入 */
    d[1] = 11;
    d[2] = 19;

    printf("%d 年 %d 月 %d 日\n", d[0], d[1], d[2]);
}

 
構造体を用いて
 
#include <stdio.h>

main()
{
    struct DATE_DATA 
    {
        int  yy;
        int  mm;
        int  dd;
    } data ;

    data.yy = 1998;    /* date という構造体変数名の yy というメンバに代入 */
    data.mm = 11;
    data.dd = 19;

    printf("%d 年 %d 月 %d 日\n", data.yy, data.mm, data.dd);
}

 
 
読み方
 
 
struct DATE_DATA
{
    int yy;
    int mm;
    int dd;
}   date ;

において・・・
 

1)  date.yy     ....  ( 「構造体変数名.メンバ名」のフルセット )
 

この構造体変数の(中の)・・・
date ... (構造体変数名)

yy というメンバ
 ↓
yy  ... int 型 のメンバ mm ... int 型 のメンバ dd   ... int 型 のメンバ

 
→ 個々のメンバにデータを代入する時 or データを参照する時
 
2) date  ... ( 「構造体変数名」のみ )
 
この構造体変数全体(つまりメンバ全部)
date ... (構造体変数名)
 
yy  ... int 型 のメンバ mm ... int 型 のメンバ dd   ... int 型 のメンバ
 
→ 構造体をまとめて代入・参照する時
→ 関数の引数・戻り値として使用するとき
 
 
 
[Back] [Index]
egami@egamix.com