Namespaces
Variants

Static storage duration

From cppreference.net

식별자가 저장 클래스 지정자 _Thread_local 없이 선언되고, 외부 또는 내부 linkage 를 가지거나 저장 클래스 지정자 static 를 가진 객체는 정적 저장 기간을 가집니다. 해당 객체의 수명은 프로그램 전체 실행 기간이며, 저장된 값은 프로그램 시작 전에 단 한 번만 초기화됩니다.

참고 사항

저장된 값이 한 번만 초기화되므로, 정적 저장 기간을 가진 객체는 함수 호출을 프로파일링할 수 있습니다.

키워드 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