c언어 독학 static variable 변수
■ 이번 글에서는 static 변수에 대해서 정리해보려고 하는데요. 그전에 지난 글에서 정리했던 전역변수와 지역변수의 특징을 복습한다는 생각으로 간단하게 정리하고 넘어갈게요.
■ 두 변수의 차이점은 메모리에 할당되는 시간과 소멸하는 시간이 다르고 접근할 수 있는 범위가 달랐습니다. 그중 지역변수는 함수가 실행될 때 메모리에 할당되고 그 함수 내부에서만 접근할 수 있었는데요. 매번 메모리에 할당됐다고 소멸하는 과정이 불필요할 때가 있습니다. 그래서 지역변수도 전역변수처럼 프로그램이 실행되면서 메모리에 할당되고 자동으로 초기화되며 프로그램이 종료될 때 소멸하도록 할 수 있는데요. 지역변수에 static을 붙여 주면 됩니다. 이렇게 하면....
1. 프로그램 실행과 동시에 메모리에 할당.
2. 접근 범위는 지역변수와 같음
3. 프로그램 종료할 때 소멸
이런 특징을 갖게 됩니다. 상황에 따라서는 유용하게 사용할 수 있는 변수이겠죠? 예제를 하나 만들어서 이 특징을 확인해보겠습니다.
▲ Exam 함수 내부에 static과 일반 지역변수 x, y를 각각 선언하고 초기화하고 있으며... 함수가 실행되면 두 값을 1씩 증가해서 값을 출력하고 있습니다. 그럼 이 함수를 반복해서 실행하면 어떻게 될까요?
■ 일반 지역변수라면 x, y의 값은 함수 실행과 동시에 할당됐다가 함수가 끝날 때 소멸하기 때문에 계속 같은 값이 출력될것입니다. 위 예제에서 y값은 그렇게 출력 되겠죠. 하지만 x는 전역변수처럼 프로그램 실행할 때 할당되고 프로그램이 종료될 때 소멸하기 때문에 값이 계속해서 증가하게 될 것입니다. for 문을 이용해서 Exam 함수를 반복 실행해보겠습니다.
▲ Exam 함수를 10회 반복하도록 하고 있는데요. 앞에서 정리한 대로 출력 결과를 예상할 수 있겠죠? 확인해보고 마무리하겠습니다.
▲ 지역변수인 y는 값이 그대로입니다. 하지만 static을 선언된 x는 값이 계속 증가하는 걸 확인할 수 있습니다. 이렇게 해서 static 변수의 특징에 대해서 알아봤습니다. 수고하셨어요.