【第12回】


『内容』

<構造体>

 異なるデータ型の変数をひとまとまりのデータとして扱うのに便利である.例えば,学生番号(int型),身長(double型),体重(double型),名前(char型)の4種類のデータをひとまとめにし,学生というデータとして扱う場合である.同じデータ型であれば,配列を使って実現できる.すなわち,

ということである.簡単に言えば,「データ型の異なる要素を扱うことができる配列のようなもの」ということになる.

1. 構造体の定義,メモリ配置,初期化

 1.1 構造体の定義(教科書p.72を参照)

 1.2 メモリ配置と初期化(教科書p.73を参照)

2. 構造体の各メンバへのアクセス 3. 構造体の配列,入れ子

『演習』

8.構造体と共用体

8.1 構造体

 異なるデータ型の変数の集まりを,一つにまとめたものが構造体である.構造体を用いることで,複雑なプログラムを分かり易くできる.

8.1.1 構造体の定義


8.1.2 メモリ配置と初期化

 構造体に含まれる変数のことを「メンバ」と呼ぶ.構造体の型定義の時に記述された順番通りに,このメンバの記憶領域がメモリ上に確保される(教科書p.73の上部参照).
 構造体変数を宣言するときに各メンバに値を入れる,すなわち,初期化することができる.初期化には以下の2通りのやり方がある.


8.1.3 各メンバへのアクセス

 「構造体変数名.メンバ名」により対象メンバにアクセスし,各メンバへ値を代入したり,値を参照したりする(教科書p.74の上部参照).

 教科書p.74の「プログラム8-1」を実行し,その動作を確認せよ.

 「プログラム8-1」に以下の変更を加えよ.

 解答例 ←(まずは見ないで,自分で考えてプログラムすること)


8.1.4 構造体の配列

 同じ構造体の型を有する構造体変を複数個用いる際には,構造体変数を配列で宣言することにより,プログラムは簡潔になり,分かり易くなる.

 教科書p.75の「プログラム8-2」を実行し,その動作を確認せよ.(教科書p.75の「文法8-6」,「文法8-7」,「文法8-8」を参照)

 「プログラム8-2」を修正し,構造体のメンバに年齢を加えたものにせよ.

 解答例 ←(まずは見ないで,自分で考えてプログラムすること)



8.1.5 構造体の入れ子

 構造体のメンバに,構造体を含むことができる.この定義方法には2種類有り,(1)メインの構造体の型宣言と入れ子になる構造体の型宣言を同時に行うものと,(2)入れ子となる構造体の型宣言をまず行い,次にその構造体タグ名を用いてメインの構造体の型宣言を行うものである(教科書p.76,ならびにp.77の「文法8-9」を参照).
 入れ子内のメンバへアクセスする場合は,ピリオド「.」で構造体変数名を繋げて指定する.すなわち,教科書p.76のSTUDENT構造体を構造体変数名stdataとして宣言した場合,入れ子のDATE構造体の構造体変数名をbirthdayとして宣言しているので,


  stdata.birthday.year  stdata.birthday.month  stdata.birthday.day
とすることにより,入れ子内のメンバを指定することができる.

 教科書p.77の「プログラム8-3」を実行し,その動作を確認せよ.

 「プログラム8-3」に以下の変更を加えよ.

 解答例 ←(まずは見ないで,自分で考えてプログラムすること)


レポート課題11(授業終了後にアップロード)

 RePORTシステム