1999年度のプログラミングIIIの授業は終りました。 この授業のページは参照用の資料として保存しているものです。最新の情報・資料は江上の授業ページで。 |
構造体とは |
キーワード
構造
→ 全体を形づくっている種々の材料による各部分の組み合わせ
●構造体(structure)
●構造体タグ名(構造体変数名)
●メンバ
たとえば個人データベース(名簿)を作成する場合に
個人単位で一括して管理したいという要求 |
構造体を使う |
ゲームなどで、キャラクタ・自機・敵機・ミサイル・障害物の場所(2次元であればx,y)や状況を
一括して管理したいという要求 |
構造体を使う |
[Q] このようなまとめた管理が必要になることは意外と多いと思われる・・・身の回り事例を考えてみよ
構造体はC言語において’型’が違う変数の集まりをまとめて使用するやり方である
配列変数 array
同じ「型」を持つ(たとえば int 型であれば全て int 型の変数の)配列要素の集まり |
構造体変数 struct
違う「型」を持つ(もちろん同じであってもよい)メンバの集まり
|
構造体へのアクセス
構造体を使うときの考え方
これまでの変数の宣言・準備は型 変数名 ;
例) int a;
構造体では・・・
struct 構造体タグ名 { メンバ } 変数名 ;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
この部分を新しい「型」だと考えることにしよう
例) struct DATE_DATA { int yy; int mm; int dd; } x; /* 敢えて改行はいれていない */
構造体は「ちょっと複雑な型宣言が必要な特別な変数」と認識してもよい
構造体変数の準備
- 構造体タグ名とメンバ名・構造体変数を1度に定義する方法
(「p.175 リスト8_5 の その2」のやり方)
struct 構造体タグ名 { メンバ名 } 構造体変数名 ;
struct ADR_DATA
{
int code ;
char name[20];
char seibetsu;
char address[100];
char tel[12];
} data1, data2;- 「構造体タグ名とメンバ名」「構造体変数名」と2度に分けて定義する方法
(「p.175 リスト8_5 の その1」のやり方)
struct 構造体タグ名 { メンバ名 } ;
struct 構造体タグ名 構造体変数名 ;
struct ADR_DATA
{
int code ;
char name[20];
char seibetsu;
char address[100];
char tel[12];
};
struct ADR_DATA data1, data2;
どちらを使っても良い。この段階での手間はどちらもほとんど変わらない。