자동 변수는 그 함수 내에서만 사용되며 함수에서 벗어나면 소멸하지만, 정적 변수(static variable)는 데이터 영역 이 기억 영역에 영구적으로 존재한다. 그리고 사용 용도에 따라 내부 정적 변수와 외부 정적 변수로 나뉜다.
- 내부 정적 변수: 함수 안에서 선언된 정적 변수
- 외부 정적 변수: 함수 밖에서 선언된 정적 변수
먼저, 내부 정적 변수는 함수 안에서 선언되며 그 함수 안에서만 사용할 수 있다. 그러나 자동 변수와 달리 그 함수를 빠져 나왔다가 다시 들어가도 이전 값이 그대로 유지된다. 그 예시가 아래와 같다.
그리고 외부 정적 변수는 함수 외부에서 정적으로 선언되는 변수로, 분리 컴파일 시 변수가 선언된 파일 내에서는 참조가 가능하지만 다른 파일에서는 참조할 수 없다. 다음은 이에 대한 예시로, 외부에서 선언한 정적 변수 count를 다른 파일에서 사용하려 하지만 사용이 불가능하다.