TPY ENGINEERING VLOG

TPY ENGINEERING VLOG(C,JAVA)

*C言語* 〜40時限目〜 構造体を初期化する・・・

〜目次〜

 

 

 

構造体を初期化する

構造体を宣言した後に、

ドット演算子を使ってメンバに値を代入する方法について、

学びました。

この宣言と値の代入を構造体でもまとめることができます。

そのことを、

構造体の初期化

と呼びます。

変数を宣言する際に、{ }で囲んで値を記述すると、

カンマで区切った順番にメンバに値が格納されます。

構造体にあらかじめ初期値を与える際に便利なので、

覚えてください。

39時限目のコードを初期化を使って書き換えてみます。

sample91.c

f:id:YuyaTerayama:20180913214311p:plainーsample91の実行画面ー

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

 

構造体に代入する

これまでは各メンバに対して、

代入演算子を使って値を格納してきました。

構造体変数そのものに対して代入演算子を使うとどうなるのか、

以下のコードを入力して確認してみます。

sample92.c

f:id:YuyaTerayama:20180913215259p:plainーsample92の実行画面ー

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

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

car1をcar2に代入しました。

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

sample92では、

car1とcar2という構造体を宣言しています。

そして、代入を行なっています。

この代入は、

car2のメンバにcar1のメンバを1つずつコピーして値を格納する

ということを意味しています。

構造体で同士でこのような代入をすることができるので、

覚えておいてください。

 

構造体型のサイズを知る

構造体も新しい型です。

そこで、構造体型のサイズについて調べてみます。

構造体型のサイズを調べるには、以前使っていた

sizeof演算子を使います。

以下のコードを入力してみてください。

sample93.c

f:id:YuyaTerayama:20180914023218p:plainーsample93の実行画面ー

int型サイズは4バイトです。

double型サイズは8バイトです。

構造体struct Car型のサイズは16バイトです。

構造体struct Car型へのポインタのサイズは8バイトです。

構造体struct Car型は、int型とdouble型のメンバを持っている。

構造体型のサイズは、各メンバのサイズを足し合わせたものと同じか、

それよりも大きくなります。

従って、たくさんのメンバを持つ構造体や大きなサイズのメンバを持つ

構造体は大きなサイズになります。

ただし、

実行画面を見てわかる通り、

構造体のサイズは2つの型をぴったり足し合わせたサイズに、

なるとは限りません。

実行環境によってサイズは少し変わってきます。

一般的に、

多くのメンバを持つ構造体へのポインタは、

構造体そのもののサイズよりも小さくなっています。

 

次回はビットフィールドについて学んでいきます。

 

〜END〜