• ベストアンサー

関数内、ファイルのstatic変数

関数内で、static変数を宣言した場合に、その値は保持されると 思いますが、その関数の外からポインタで見る場合にその値は 保証されるのでしょうか? (必ず同じメモリ上に配置されるのでしょうか?) また、関数とファイル内static変数においてスコープ以外に 取り扱いが変わったりするのでしょうか? (配置されるメモリ空間等) よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • hidebun
  • ベストアンサー率50% (92/181)
回答No.1

JIS X 3010によると、 記憶域クラス指定子staticを使って宣言された識別子のオブジェクトは、静的記憶期間をもつ。その生存期間はプログラム実行の全体とする。その値はプログラム開始処理前に1回だけ初期化する。 オブジェクトは、生存期間を通じて存在し、一定のアドレスを持ち、最後に格納された値を保持する。ポインタの値はそのポインタが指すオブジェクトが生存期間の最後に到達すると不定になる。 とのことなので、実行中のプログラム内からのアクセスであればその値は保証され、関数内外にかかわらず、メモリという観点からすれば違いはないと思われます。

f_attck
質問者

お礼

御回答ありがとうございます。 お礼が遅くなり申し訳ありません。 解りやすい説明で助かりました!