[ 高橋のページ ] [ プログラミングおよび実習II ]
12月7日の演習問題のプログラムを実際に作成し,動作確認しましょう
この授業ではtypedefは登場していないのですが,構造体の定義とtypedefとの関係で混乱している人がいるようですので,少し解説をしておきます.
(1) 構造体の定義の仕方,変数の宣言の仕方の基本
構造体を使う場合,基本的には,まずタグ名を指定して,どんなメンバから成る型であるかを定義する部分を書きます.そうすると,その構造体の型の変数を宣言する場合には,「struct タグ名」をintとかdoubleとかと同じように型の名前のように考えて使えばよいことになります.
// 構造体の定義(こういう型ですよ,という定義),タグ名はkenshincard struct kenshincard{ char name[100]; double height; double weight; }; int main() { // 上で定義した型の構造体の変数の宣言(「struct kenshincard型」の変数a,b) struct kenshincard a, b;
(2) typedefを使って名前をつけ直す
構造体の基本的な使い方では,「struct なんちゃら」と長くなるので,鬱陶しいかもしれません.そういう場合,typedefというのを使って,別の名前を付けたりすることができます.
// 構造体の定義(こういう型ですよ,という定義),タグ名はkenshincard struct kenshincard{ char name[100]; double height; double weight; }; // typedefを使って,「struct kenshincard型」を「kc型」と定義する typedef struct kenshincard kc; int main() { // 上で定義したkc型の変数の宣言(「struct kenshincard型」と同じ意味) kc a, b;
(3) さらに省略する
上の構造体の定義とtypedefの部分は,一緒にまとめて
// タグ名kenshincard型の構造体を定義するとともに,typedefでそれをkc型とする typedef struct kenshincard{ char name[100]; double height; double weight; } kc;
と書いたり,さらにタグ名を省略して
// 構造体を定義し,typedefでそれをkc型とする typedef struct { char name[100]; double height; double weight; } kc;
と書いたりできます.いずれの場合も,この構造体の型の変数a,bを宣言する場合
kc a,b;
のように書くことになります.