質問: C言語の勉強をしている者です。 やっとこさポインタのところまでやってきまして、いろいろ試しているところなのですが、不可解な事が起こったので質問させてください。 int型の配列を作って、初期化しないままその配列[0]に入っている値を覗くと -858993460 という値が入っていました。 もう一度配列を作り、メモリのアドレスを確認すると、前に作った配列とポインタのアドレスが同じだったので そこに0を入れました。 当たり前ですが配列[0]の値は0でした。 さらにもう一度配列を作り、[0]のアドレスの中身を覗くと -858993460 という値に戻っていました ※配列[0]のアドレスは常に一緒です。 なぜこんな訳のわからない数字( -858993460 )に初期化されているんでしょうか 一度0に初期化したのなら次は0のままになっていると予測していたのですが、どうなっているんでしょうか どなたか理由のわかる方いませんか
回答: 変数の初期値は「不定」なので定まっていません。 実行するたびに変わっているかもしれませんので、「たまたま」でしょう。 処理系によっては、不定値へアクセスすると異常終了することもありますしね。 ちなみにこの値は16進数にすると「FFFFFFFFCCCCCCCC」ですね。なにか規則的なものを感じます。 >一度0に初期化したのなら次は0のままになっている 処理系によるでしょう。確保されたメモリを開放した場合、別の値で書き換えられているかもしれません。どちらにせよ、「不定」です。