C言語 - 構造体の初期化

 クラウディア
1. 概要
2. 暗黙のコンストラクタ・明示的コンストラクタによる違い

1. 概要

 この項は、C言語でなく、C++ の言語仕様になります。  C/C++ に関しては、人に教えるくらいはできると思っていますが・・・。  まだまだ、甘いといいますか、知らない言語仕様がありました。

2. 暗黙のコンストラクタ・明示的コンストラクタによる違い

 下記のようなソースを書いていて  実行した場合、15~16行の出力も、18~19行の出力も、同じようなもの(不定値になるので何が出力されるのかわからん)になると思っておりました。  あにはからんや・・・。  実行してみると・・・。  これは、12行目と、13行目の宣言の違いによるものだそうで・・・。  12行目は、明示的にコンストラクタを呼んでいるために、初期化が働いて、0 になるそうなのです。  13行目は、暗黙のコンストラクタになっているため、初期化されることはなく不定値がはいったままになるそうです。  まぁ、この場合も  のように明示的に初期化を行えば、以下の結果が得られるわけですが・・・。
 
 
カウンタバックグラウンド