본문 바로가기

카테고리 없음

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

void static_variable()
{
	static int cnt = 0;
	cnt++;
	printf("cnt = %d\n", cnt);
}

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

프로그램 실행화면


지역변수도 들어 보았고 전역 변수도 들어 보았다. 그렇다면 정적 변수란 무엇일까? 나도 이런게 있다는 것만 알고 있지 실제로 프로그래밍할 때 사용한 적은 지금까지 2번 정도 밖에 없다.


간혹 지역변수인데 다음 번 호출할 때도 그 값을 기억해야 하는 녀석이 있다. 그럴 때 static 을 써주면 된다. 쓰게 될 경우는 거의 없다.


전역변수와 지역변수의 짬뽕 같은 녀석이다. 실행화면에서 보면 알듯이 함수를 호출할 때마다 cnt의 값이 1씩 증가한다. 그리고 이 값을 계속 가지고 있는 것을 볼 수 있다.