関数、クラス、あるいはブロック内で宣言/定義され、その範囲を終了しても値を保持しつづける変数。スタティック変数。
例えば関数が始めて実行された時に変数が確保され、その関数が終わっても内容は消えず、次回以降その関数に来たときにその値が継続して利用されるもの。
C/C++、Java、C#などでは、staticを付けて宣言された変数をいう。
staticを付けずに宣言された変数は自動変数(あるいはローカル変数)といい、これはスタックに確保される。一方、静的変数は永続的に記憶するためヒープに確保される。
static変数をインクリメントして結果を表示する関数を3回呼び出す例。
#include <stdio.h> hoge() { static int fuga = 0; printf("%d\n", fuga); fuga++; } main() { hoge(); hoge(); hoge(); }
この例の場合、関数が最初に呼ばれた時に静的変数の内容を0に初期化するが、2回目以降は初期化しない。
したがって、実行結果は、以下のようになる。
> ./a.out 0 1 2 >
もし仮にstaticを消して実行すれば、変数fugaは毎回0に初期化されるため、実行結果は3回とも0になる。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます
▼機能別検索
人気検索語
最近の更新語
今日の用語
おまかせ検索
▼別の語で検索
▼索引検索
カテゴリ検索
全グループ一覧
全プラグイン一覧
このサイトについて
趣旨・概要
参加の案内
ダウンロード