最終更新:2011-09-27 (火) 07:23:02 (4588d)  

記憶クラス
Top / 記憶クラス

自動変数? (auto)

  • 関数内部で宣言され、宣言された関数の中でのみ使用可能。(= ローカル変数)
  • 関数実行中のみメモリ上のスタックに確保され、関数の実行が終了すると、メモリ上から削除される。(⇒ メモリの有効利用)
  • 関数が呼ばれるたびに初期化を行う。
auto int a;
  • のように宣言する。
  • ただし、「auto」は通常省略され、単に「int a;」のように宣言する。
  • 明示的に初期化を行わないと、初期値は不定値になってしまう。

外部変数 (extern)

  • 関数外で定義され、定義以降のどの関数からでも使用可能。(= グローバル変数)
  • プログラム開始処理の前に一度だけ初期化を行う。
  • プログラム実行中に常に同じ場所に配置され値を保持。
  • 明示的に初期化を行わない場合は、初期値は 0 になる。

静的変数? (static)

  • プログラム実行中に常に同じ場所に配置され値を保持 → 値を保持したいときに使用。(外部変数の機能)
  • 関数内部で宣言され、宣言された関数の中でのみ使用可能。(自動変数の機能)
  • プログラム開始処理の前に一度だけ初期化を行う。
  • static int a; のように宣言する。
  • 明示的に初期化を行わない場合は、初期値は 0 になる。

その他

  • register - レジスタになるべく配置(コンパイラが最適化してくれるのであまり使わない)
  • typedef
  • 記憶域クラスなし

参考