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씩 증가한다. 그리고 이 값을 계속 가지고 있는 것을 볼 수 있다.