본문 바로가기

카테고리 없음

[C++] 정적 변수(static variable) 이해하기

void static_variable()
{
	static int cnt = 0;
	cnt++;
	cout << "cnt = " << cnt << endl;
}

void main()
{
	int i;
	for(i = 0; i < 10; i++)
	{
		static_variable();
	}
}

프로그램 실행화면


정적 변수란 녀석이 있다. 지역 변수를 선언하고 해당 함수 또는 영역에서 나오게 되면 그 지역변수는 메모리상에서 지워지게된다.


그래서 또 그 함수를 호출했을 때 이전에 가지고 있던 값이 아니라 초기값을 가지고 있다. 만약 지역변수로 선언했지만 그 값을 계속해서 가지고 있게 하고 싶다면 어떻게 해야할까?


그때 사용할 수 있는 것이 바로 정적 변수 static variable이다. static_variable() 함수 안에 cnt가 선언되어 있다. 프로그램 실행화면을 보면 알 수 있듯이 cnt값이 사라지지 않고 계속 증가되는 것을 볼 수 있다.


굳이 왜 정적변수를 만들었는지는 모르겠다. 전역변수를 선언해 놓으면 그냥 끝나는 일인데 말이다. 하지만 가끔 아주 드물게 지역변수로밖에 선언할 수 없는데 그 값이 지워지지 않아야할때가 있다.


난 딱 한번 그랬던 적이 있었다. 프로그래밍 스타일에 따라서 많이 쓰고 안쓰고가 결정되는 것 같다.