그림 3-21과 같이 main() 함수에서 변수 a와 b가 생성되고 각각 1과 2로 초기화됩니다. 그리고 abc(a, b) 함수 호출로 abc() 함수 지역 안에서 지역 변수 a와 b가 생성됩니다. abc() 함수 안의 변수 a와 b의 값은 각각 main() 함수에게 전달받은 1과 2로 초기화됩니다. 그리고 abc() 함수 안에서 각각 10과 20으로 계산되어 a = 10, b = 20이 됩니다.
그림 3-21 | abc(a, b) 함수의 동작 원리
여기서 유의할 점은 main() 함수의 a, b와 abc() 함수의 a, b는 서로 다른 별개의 변수라는 점입니다. 그저 변수의 이름이 같을 뿐입니다. 서울에 사는 ‘김철수’와 인천에 사는 ‘김철수’는 전혀 다른 사람인 것과 같은 이치입니다. 전혀 다른 변수일 뿐만 아니라 abc() 함수가 호출되어 실행 및 완료된 후 main() 함수로 제어가 다시 넘어갈 때는 abc() 함수에서 사용된 지역 변수인 a와 b의 메모리는 시스템에 반환됩니다. 즉, 아예 없어집니다. 따라서 이 프로그램을 실행하면 a와 b는 main() 함수에서 초기화된 값 1, 2가 출력되는 것입니다.