構造体 基礎編第18回


20140218

変数は1つのデータ、配列は型が同じ複数のデータを扱えます。しかし、型が異なる複数のデータを取り扱いたい場合もあります。このようなときに使用できるデータ型の変数が構造体(structure)です。

構造体

1つまたは複数の異なるデータ型の値をまとめて格納できる変数です。

前回取り上げた生徒の例で説明します。配列には、生徒ごとに複数のテストの点数を格納することができました。これはテストの点数が整数値であるためですが、配列では生徒の名前や科目名など別のデータ型の値は扱うことができません。

構造体の書式

構造体は次の書式で宣言されます。

変数名ではなくメンバ名となっていることに注意してください。構造体内で定義された変数はメンバ(member)と呼ばれます。メンバには次のようにアクセスします。

構造体名.メンバ

構造体名とメンバの間にピリオドがあることに注意してください。

構造体を使用する

次のような生徒に関連するデータがあるとします。

生徒のデータ:
名前(文字型)
学籍番号(整数型)
身長(小数型)
体重(小数型)

これを構造体で表すと次のようになります。

2行目:文字型の配列を宣言(半角8文字未満)
3行目:整数型の学籍番号を宣言
4行目:身長を宣言(小数型)
5行目:体重を宣言(小数型)

この構造体を使用するには、次のようにします。

これは、次のように表示されるはずです。

Suzukiの体重は72kgです。
Satoの身長は164.2mです。

構造体型の配列を使うこともできます。

student student[29];

このように異なる型の複数のデータをまとめて格納できる構造体はデータベースによく似ています。

関数の引数に構造体を使うことで、関数に複雑なデータをまとめて渡すことができます。また、関数が構造体を戻すこともできます。

注意

構造体をサポートしているプログラミング言語はC/C++のみです。似たようなデータ型としてVisualBasicのユーザ定義型などがありますが、ほとんどの言語ではサポートされていません。Javaなど最近のプログラム言語の多くはオブジェクト指向であり、構造体をさらに発展させた「クラス」をサポートしているため、構造体が不要です。「クラス」を理解するための前段階として構造体を取り上げました。

まとめ

異なる型の複数のデータをまとめて取り扱う構造体について説明しました。構造体を使用できるのはC/C++のみですが、これを理解することはこれから説明する「クラス」の理解につながります。

次回から「オブジェクト指向」の説明を始める予定でしたが、少し変更して「関係式と初期化」について説明したいと思います。

では、また。

コメントしてみる