名前空間
変種
操作

静的記憶域期間

From cppreference.com
< c‎ | language

記憶域クラス指定子 _Thread_local を付けずに宣言され、かつ、外部または内部リンケージを持つか、あるいは記憶域クラス指定子 static を付けて宣言されたオブジェクトの識別子は、静的記憶域期間 (static storage duration) を持ちます。その生存期間はプログラムの全実行期間となり、その格納値はプログラムの開始前に一度だけ初期化されます。

[編集] 注意

格納値は一度しか初期化されないため、静的記憶域期間を持つオブジェクトは、関数の呼び出し回数を数える(プロファイルする)ことができます。

キーワード static のもう一つの用途は、ファイルスコープです。

[編集]

#include <stdio.h>
 
void f (void)
{
    static int count = 0;   // static variable   
    int i = 0;              // automatic variable
    printf("%d %d\n", i++, count++);
}
 
int main(void)
{
    for (int ndx=0; ndx<10; ++ndx)
        f();
}

出力

0 0
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
0 9
English 日本語 中文(简体) 中文(繁體)