main() 함수에서 두 번째 bell() 함수가 호출되어 bell() 함수로 제어가 넘어가면 정적 변수 order를 선언하는 명령문을 다시 만나지만, 정적 변수는 단 한 번만 생성되고 초기화된다는 특징이 있습니다. 그래서 두 번째 bell() 함수 호출에서는 ➎를 수행하지 않고 넘어갑니다. 그 다음 줄에서 바로 order 값이 하나 증가하고 마찬가지로 order 변수의 메모리를 반환하지 않은 채 다시 main() 함수로 제어가 넘어갑니다. 그러므로 우리가 원하는 바와 같이 bell() 함수를 호출할 때마다 ➊, ➋, ➌이 차례대로 출력됩니다.
그림 3-23 | bell( ) 함수로 보는 정적 변수의 동작 원리