*C言語* 〜39時限目〜 構造体の基本・・・
〜目次〜
構造体型の仕組みについて
新しく決めることができる型として、
構造体型(structure type)
というものがあります。
この型は、
異なる型の値をまとめて新しい型にする
という機能を持っています。
車で例えると、
ナンバー(int型)、ガソリン量(double型)などの、
異なる型の値をまとめて、
「車」をあらわす型にすることができるのです。
構造体型がどのような型であるか取り決めることを、
構造体型の宣言
と呼びます。
構造体型を宣言するには、
struct
というキーワードを使います。
構造体型はブロックの中に、
変数などをまとめて記述したものです。
例で出した車の場合は以下のように宣言できます。
struct Car{ (車をあらわす構造体型Car)
int num; (ナンバーを格納する)
double gas; (ガソリン量を格納する)
}
構造体変数を宣言する
構造体型を宣言することで、
新しい型としてコードの中で使うことができます。
構造体変数の宣言は以下の通りです。
構造体型名 構造体変数名;
struct Car型の変数も、通常の変数と同じように宣言します。
以下のように宣言することで、
struct Car型の変数となります。
struct Car car1;
メンバにアクセスする
構造体型の変数(構造体)を宣言すると、
その中のnumやgasに、
実際のナンバーやガソリン量を格納することができるようになります。
このnumやgasといった変数のことを、
メンバ(member)
と呼びます。
構造体のメンバを利用するためには、
ドット演算子(.)
というものを使います。
そして、メンバを利用することを、
メンバにアクセスする
と呼びます。
構造体のメンバへのアクセスは以下の通りです。
構造体変数名.メンバ
実際にコードを入力して、
どのようにして使うのか確認してみます。
sample88.c
ーsample88の実行画面ー
車のナンバーは7777: ガソリン量は12.300000
このようにすることで、
車を扱うコードを書くことができました。
尚、メンバの値をキーボードから入力できると、
より柔軟なプログラムにすることができます。
実際にコードを入力してみます。
sample89.c
ーsample89の実行画面ー
ナンバーを入力してください。
7777
ガソリン量を入力してください。
12.3
車のナンバーは7777:ガソリン量は12.300000
これまでの変数と同じで、
&をつけるということに注意をしてください。
尚、&は構造体名の前につけます。
typedefで名前を割り当てる
構造体型の型名を短縮するために、
typedef
というキーワードを使う方法があります。
//構造体型 struct Carの宣言
typedef struct Car{
int num;
double gas;
} Car;
こうすることで、「struct Car」という型名に対して、
「Car」という新しい型名をつけることができます。
このため、あとで構造体型の変数を宣言する時には、
以下のように短い名前を使って宣言することができます。
Car car1;
typedefを使うことは便利になるので、
実際にコードの中で使ってみます。
sample90.c
ーsample90の実行画面ー
ナンバーを入力してください。
7777
ガソリン量を入力してください。
12.3
車のナンバーは7777:ガソリン量は12.300000
尚、typedefでつける名前は、
Carでなく別の名前でも問題はありません。
次回は構造体の初期化から学んでいきます。
〜END〜