TPY ENGINEERING VLOG

TPY ENGINEERING VLOG(C,JAVA)

*C言語* 〜42時限目〜 構造体の配列を作る・・・

〜目次〜

 

 

 

構造体の配列を作る

「構造体の配列」を作っていきます。

構造体型は通常の型と同じように扱うことができるので、

構造体の配列を作ることが可能です。

実際に以下のコードを入力して見てください。

sample97.c

f:id:YuyaTerayama:20180915134034p:plainーsample97の実行画面ー

車のナンバーは7777:ガソリン量は12.300000

車のナンバーは6666:ガソリン量は32.100000

車のナンバーは5555:ガソリン量は43.100000

3台の車について、ナンバーとガソリン量を管理する

プログラムを作成しました。

配列の各要素が構造体となっているのです。

このようにすることで、

複雑なコードを繰り返し文を使うことで、

簡単に記述することができるようになります。

 

構造体でリストを作る

構造体のメンバとして、

同じがたへのポインタをメンバとすることがあります。

以下のような構造体型を宣言することで、

内部のポインタによって、

同じ型の構造体をさし示すことができるようになります。

この方法を使うことで、

構造体を数珠つなぎにして管理することができます。

typedef struct Car{

  int num;

  double gas;

  struct Car *next;

}Car;

実際に以下のコードを入力して、

確認して見ます。

sample98.c

f:id:YuyaTerayama:20180915135315p:plainーsample98の実行画面ー

車のナンバーは7777:ガソリン量は12.300000

車のナンバーは6666:ガソリン量は32.100000

車のナンバーは5555:ガソリン量は43.100000

sample98では、

struct Carという構造体型にポインタを含めて、

別のstruct Car構造体を示すことができるようになっています。

つまり、

ある車が別の車をさし示すことができるのです。

このような方法を使うことで、

車を数珠つなぎにして管理することができます。

実際にコードを詳しく見ていきます。

最初に、car0のnextメンバにcar1のアドレスを代入しています。

こうすることで、

car0とcar1がつながります。

次に、car1のnextメンバにcar2のアドレスを代入しています。

これで、

car1とcar2がつながります。

最後にcar2のnextメンバにNULLを代入します。

これは標準ライブラリのマクロで定義されている値で、

ポインタが何もさし示さない際に代入する値です。

sample98では、car2の次に何もさし示さないようにして、

car2を末尾のデータとしています。

このようにしてつないだ構造体の列に、

順番にアクセスすることができます。

このような数珠つなぎの構造のことを、

リスト(list)

と呼びます。

C言語では構造体を利用して、

リストを構成することができるのです。

リストは、順番を入れ替えたり、

ユーザーの入力に応じた柔軟な処理をする場合に、

便利な構造になっています。

 

データ構造

リストや配列など、

プログラムで使われるデータを管理するための構造のことを、

データ構造(data structure)

と呼びます。

今回のリストでは、

あらかじめ用意した3つの構造体を数珠つなぎにしました。

実務上で使われるリストでは、

ユーザーの操作に応じて必要な数のデータを数珠つなぎにするのが普通です。

 

次回は共用体型の仕組みについてやっていきます。

 

〜END〜