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