2015年5月10日この章では構造体について説明します。「構造体」はバラバラの異なる型のデータを持つ変数同士を1つの型として扱うことができます。それに対して配列は単一のデータ型しかまとめて扱う事はできません。「名前はchar型」など様々なデータ型なので配列では扱うことが出来ません。このような時に構造体を使います。構造体の作り方は最初に「構造体の宣言」を以下のように書きます。この例では以下の部分が「構造体の宣言」です。構造体型を宣言する時はstructを使います。構造体型の名前は自由に付けてください。メンバとは変数や配列の別名だと思ってください。構造体の宣言は「関数の外」で宣言するとその場所から下のプログラムのすべてで使うことが出来ますが、関数の中で宣言すると関数の中でのみ使うことが出来ます。構造体型を宣言した後は「構造体型に属する変数」を作ります。構造体型の変数も普通の変数と同じように変数の宣言と値の代入をしなくてはいけません。以下の基本構文が構造体型変数の宣言と初期化です。この例では以下の箇所が構造体型変数の宣言と初期化です。{1,18,”koike”,170.2}は以下の構造体のメンバに上から順に代入されます。以下のようにデータが代入されます。構造体型の配列でも以下の構文でメンバに代入することができます。構造体型の配列も通常の配列と同じで宣言と同時に初期化することが出来ます。例では以下のように書いています。プログラムの説明に入ります。中の要素の書き順は構造体の宣言の中のメンバの順番と合わせてください。ような書き方はいけません。これで1が出力されます。構造体の配列はfor文で出力しています。iには0から2がループするごとに代入されます。先ほどの例では構造体型の変数と配列の2つを使いましたが、以下のように構造体型の配列だけ使用しても結果は同じになります。次に構造体型の型名を短縮する書き方について説明します。ように長い型名を書かなくてはいけませんでした。次の構文で書くと構造体型の型名を省略することが出来ます。〇構造体型の宣言をする時に構造体型名の前にtypedefを付ける。書く代わりにどのような名前を使いたいかを決めてブロックの終わりに記述します。これはstudentではなくても何でもいいです。上のように宣言しましたので以下のようにstructを付けないで宣言と初期化をすることが出来ます。この書き方はintなどで宣言するのと同じ感覚で書くことができますので、使いやすいです。次の例では構造体でのscanfの使い方について説明します。scanfの使い方が構造体では違うということではありませんが、scanfと構造体の組み合わせで書けることを覚えておいてください。この例では以下の箇所が該当します。補足ですが、今までは構造体の変数にデータを入れる場合には以下のように書いていました。この例の場合には以下のように構造体の宣言をしてから、scanfでデータを入れています。次の例では構造体を関数に渡す方法について説明します。ように構造体変数で受け取ります。