더북(TheBook)

그림 3-21과 같이 main() 함수에서 변수 ab가 생성되고 각각 12로 초기화됩니다. 그리고 abc(a, b) 함수 호출로 abc() 함수 지역 안에서 지역 변수 ab가 생성됩니다. abc() 함수 안의 변수 ab의 값은 각각 main() 함수에게 전달받은 12로 초기화됩니다. 그리고 abc() 함수 안에서 각각 1020으로 계산되어 a = 10, b = 20이 됩니다.

그림 3-21 | abc(a, b) 함수의 동작 원리

 

여기서 유의할 점은 main() 함수의 a, babc() 함수의 a, b는 서로 다른 별개의 변수라는 점입니다. 그저 변수의 이름이 같을 뿐입니다. 서울에 사는 ‘김철수’와 인천에 사는 ‘김철수’는 전혀 다른 사람인 것과 같은 이치입니다. 전혀 다른 변수일 뿐만 아니라 abc() 함수가 호출되어 실행 및 완료된 후 main() 함수로 제어가 다시 넘어갈 때는 abc() 함수에서 사용된 지역 변수인 ab의 메모리는 시스템에 반환됩니다. 즉, 아예 없어집니다. 따라서 이 프로그램을 실행하면 abmain() 함수에서 초기화된 값 1, 2가 출력되는 것입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.