c言語についての質問です 変数に0を入れてあるのをよく見かけるのですが、どういう意味があるのでしょうか?」
c言語についての質問です 変数に0を入れてあるのをよく見かけるのですが、どういう意味があるのでしょうか?」
C言語関連・55閲覧
ベストアンサー
C言語では宣言された変数が実体化するタイミングでは値は不定となっています。 これは今まで使っていなかったメモリ領域が与えられた時、そのメモリ領域は、もしかしたら直前に別のプログラムが使っていて破棄された空間かもしれないという可能性を含んでいるためにその様な仕様になっています。 OSはどこの馬の骨ともわからないソフトウェアの後始末はしないことになっていますのでプログラム中に自分の全使用領域を0クリアして終了するソフトウェアというのは皆無ですのでその辺りからも、使用後のメモリ領域は混沌としている事は想像できるかと思います。 もしかすると実際にはセキュリティのためにOSがメモリ領域をプログラムに与える時は何かしら削除したり0クリアしたりスクランブルをかけたりするかもしれませんが、そのセキュリティに対するOSの動作があったとしても、元々C言語の仕様でメモリ領域がソフトウェアへ与えられた時に必ずしも0になっているとは限らないということが明記されています。 ですので、正しく書かれたプログラムでは、シーケンス途中で数値が必ず入力される変数以外は、全て初期値を代入しています。 また初期値は必ず0である必要はなく、その変数に全く変更が加わらなかった場合に1番妥当な数値が設定されますので、プログラムの設計者次第の値となります。 例えば適当な固定サイズの水玉模様画像を生成するソフトウェアがあったとすると、全画素の初期値を0とした場合、画像出力すると水玉の背景は真っ黒で出力されますが、初期値を255(場合によっては1、あるいはFF等)にした場合は真っ白な背景の画像が出力されるでしょう。
1人がナイス!しています
質問者からのお礼コメント
ベストアンサー!!!
お礼日時:3/10 11:27