プログラムを作るとき、「郵便番号と住所」、「名前と年齢」など、複数の値をひとまとまりにして、一緒に管理したい場合がある。
これまでの知識では、複数の情報を管理するとき、便利なのが配列である。
ただし、例えば、名前と年齢を別々の配列で管理すると、配列の要素を「年齢が小さい順に並べ替える」ときに、年齢にあわせて名前も並べ替えることなり面倒である。さらに、身長や体重といった情報も追加しようとすると、それだけ配列の数が増えていき、プログラムコードも複雑になる。
そこで、名前と年齢をセットで管理する新しい型をつくる方法を使うことにする。
C言語にはこのような仕組みが用意されている。
ここでは、名前と年齢のセットを格納する新しい型を考えることにする。
なお、型の名前には、「struct」というキーワードをつける決まりとなっている。
今回は、型の名称を、「struct Person」とする。
struct Person
{
char name[16];
int age;
};
このように記述すると、「struct Person」という新しい型が定義される。これを「構造体」という。
この構造体には、変数name(char型の配列)と変数age(int型)が含まれる。このnameとageを、構造体のメンバと呼ぶ。
このように構造体を定義すると、これまでの変数の宣言と同じように、
struct Person a;
と記述することで、struct Person型の変数aを宣言できる。
struct Person a = {"ISONO TAO",17};
のように記述すると、nameが、”ISONO TAO”、ageが17という値を持つように初期化できる。
ただし、このように値を代入できるのは、初期化のときだけである。
変数aのnameとageというメンバの値を参照するには、a.name、a.ageのように記述する。
変数名の後にドット(.)をつける。
なお、
struct Person a = {"ISONO TAO",17};
と記述したとき、メモリーの様子は以下の通りとなる。
コメント