프로그램 시작 부터 프로그램 종료시 까지 존재하는 변수이다. 데이터 영역에 저장되며 함수의 호출 종료에 상관없이 계속 유지되는 변수이다. 어드 함수에서든 접근이 가능하다는 장점이 있지만 이는 때때로 단점이 되기도 한다.
file1.cpp 파일에서 file2.cpp의 RealGlobalValue라는 이름의 전역 변수를 사용하기 위해서는 extern 선언을 해줘야 한다.
//file1.cpp
extern int RealGlobalValue;
정적 변수는 일반적인 auto변수 또는 dynamic변수와 작동 방식이 다르다. 정적 변수는 프로그램 시작 시 메모리에 할당되고, 프로그램 종료 시 메모리가 해제된다.(변수의 범위를 벗어나도 값을 유지한다.)
이러한 정적 변수는 프로그램의 수정, 유지 보수, 재사용을 어렵게하는 단점이 있는 전역 변수의 단점을 부분적으로 보완한다고 볼 수 있다.
static int g_Static = 0;