組み込みC/C++

C/C++リテラシー向上のためのページ

ゼロ初期化する時にどうするべきか?

C言語ならアドレスの初期化は NULL ←(void *)0 で定義されている事が多いですが処理系のstdio.hの中身をチェックしてみてください。多くの場合0で構わないと思われます。void*でキャストしたときの評価が16bit, 32bitと選べる処理系もあるようです。

 

C++言語ならアドレスの初期化は 0 ←リテラルの型がintで評価されるので、32bitなら0x00000000 で初期化される。なおC++言語ではNULLは(void *)0 で定義できないようです。(型チェックではじかれるパターンが多いためのようです)

 

char型の初期化は '\0' ←文字列リテラルの終端文字で埋め尽くす。(0を直接代入しても問題は起こりそうにないですが)

 

という解釈でやってます。そのほかは 0 を直接書いて問題ないと思っています。