サイトマップ / 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 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言語講座−それ自体コンパイルできる教材を使った講座です−