#1의 인자 목록에서 int *x는 포인터 변수를 의미합니다. 포인터 변수도 다른 변수처럼 데이터를 저장합니다. 단지 그 데이터가 메모리 주소일 뿐입니다. change_value() 함수 스택 프레임의 포인터 변수 x는 &x를 통해 #4에서 전달된 main() 함수 스택 프레임 안의 지역 변수 x의 주소 값을 저장합니다.
포인터 변수가 주소 값을 저장한다는 것은 그림 5-6에서 change_value 스택 프레임 안에 있는 int형 포인터 x가 화살표를 따라 main() 함수의 지역 변수 x를 가리키는 것과 같은 의미입니다. 가리킨다는 말을 다른 말로 풀면 참조(reference)입니다. 이렇게 인자로 변수의 참조를 전달하는 방식을 참조에 의한 전달(call by reference)이라고 합니다.
#2를 실행한 다음 스택 프레임을 살펴보면 그림 5-7과 같습니다.
그림 5-7 change_value 스택 프레임 ② (call by reference)