기존 코드와 달라진 점은 ➎에서 정수형 변수 order 앞에 static이라는 키워드입니다. 이 키워드를 넣었더니 우리가 원하는 결과가 나왔네요. 이때 static(정적)은 지역 변수를 정적 변수로 변환해 주는 키워드입니다. 이때 정적 변수란 함수 실행이 끝나더라도 사라지지 않고 계속 유지되는 변수를 말합니다.
정적 변수의 특징을 코드를 중심으로 살펴봅시다. main() 함수에서 처음으로 bell() 함수를 호출하여(➊) bell() 함수가 실행됩니다(➍). 그런 다음 bell() 함수에서 order라는 정수형 변수를 선언하고 값을 0으로 초기화하면서 int 앞에 static이라는 키워드를 넣었습니다(➎).
즉, 정적 정수형 변수 order를 선언한 것입니다. 정적 변수 order가 0으로 초기화되어 저장되는 것까지는 기존 일반 변수와 동일합니다. 하지만 함수 호출 후 실행이 끝나도 정적 변수의 메모리는 시스템에 반환되지 않고 그대로 남아 있다는 점에서 다릅니다. 따라서 bell() 함수의 실행이 끝나고 main() 함수로 제어가 넘어가더라도 order 변수는 사라지지 않습니다.