サイトマップ / C言語講座出入り口総目次目次:構造体>構造体とは

青い直線

構造体とは

青い直線

[16進文字列を10進数に変換 ]←このソース→[複素数を構造体で表現]

/* 構造体とは */

/* 今日はC言語の構造体と、プリプロセッサの #define という命令について学びます。同じ型のデータをまとめて扱うには配列を使います。しかし、個人情報のように型の違うデータをまとめて扱いたい時があります。このような時に構造体を使います。構造体は下記のように宣言します。

    struct 構造体タグ名 {
        変数1;
        変数2;
        変数3;
        --------
    };

構造体タグ名はなくてもかまいませんが、付けた方が後の取り扱いに便利です。構造体タグ名はその構造体のデータ型になります。構造体には一つ以上の変数が含まれます。各変数のことを構造体のメンバといいます。構造体のメンバが構造体であったり、構造体へのポインタであってもかまいません。そのような構造体は後に扱いますが、実務では重要です。

下記に示す構造体の例は、今回のソースプログラムで使われているものです。

    struct  person {
        short age;
        short sex;
        double height;
        double weight;
    };

このように構造体を使えば、異なる型のデータをまとめて取り扱うことができます。

構造体の各メンバに値を代入するには、下記のようにします。

    Marie.age = 22;
    Marie.sex = FEMALE;
    Marie.height = 162.3;
    Marie.weight = 56.8;

#define

プリプロセッサは、コンパイルが行われる前にソースプログラムを書き換えます。プリプロセッサへの命令は、命令の前に'#'がつきます。末尾には';'はつきません。プリプロセッサへの命令の一つに#defineがあります。例を下記に示します。

    #define MALE 1
    #define FEMALE 0

この行以降で'MALE'がでてくると、それを'1'に書き換えます。プリプロセッサのこの機能を使うことによって、ソースプログラム中に、特定の数字(マジックナンバ)を書かないですみます。もし、特定の数字をソースプログラム中に複数書き込んであると、その値を訂正するのが困難になります(以上、記号定数の復習)。 */

/* ここからソースプログラム */

#include <stdio.h>

#define	MALE	1
#define	FEMALE	0


struct  person {
    short age;        /* 年齢 */
    short sex;        /* 性別 */
    double height;    /* 身長 */
    double weight;    /* 体重 */
};

void main(void);

void main(void)
{
    struct person Marie;        /* person 型の構造体 */

    Marie.age = 22;    /* 構造体の初期化 */
    Marie.sex = FEMALE;
    Marie.height = 162.3;
    Marie.weight = 56.8;

    printf("Marie の年齢は%3d 才です。\n", Marie.age);
    printf("Marie の身長はは%6.1lfcm です。\n", Marie.height);
    printf("Marie の体重は%5.1lfkg です。\n", Marie.weight);

    if (Marie.sex == FEMALE)
        printf("Marie は女性です。\n");
    else if (Marie.sex == MALE)
        printf("Marie は男性です。\n");
    else
        printf("Marie は女性でも男性でもありません。\n");
}

/* ここまでソースプログラム */

[16進文字列を10進数に変換 ]←このソース→[複素数を構造体で表現]

青い直線

/* (C) 2000- YFプロ. All Rights Reserved. */    提供:C言語講座−それ自体コンパイルできる教材を使った講座です−

青い直線

サイトマップ / C言語講座出入り口総目次目次:構造体>構造体とは