실행결과 |
a의 주소 : 00000014BDB3F994 b의 주소 : 00000014BDB3F9B4 swap() 함수 호출 전 => a : 10, b : 20 swap() 함수 안에서 a의 주소 : 00000014BDB3F970 swap() 함수 안에서 b의 주소 : 00000014BDB3F978 swap() 함수 안 => a : 20, b : 10 swap() 함수 호출 후 => a : 10, b : 20 변수 a, b의 주소가 서로 다름 |
변수의 주소를 출력해 보니 main()함수에 선언한 변수 a의 주소가 00000014BDB3F994인데, swap()함수 안에서 변수 a의 주소는 00000014BDB3F970입니다. 이는 main()함수에 선언한 a와 swap()함수 안의 a는 서로 다른 변수라는 뜻입니다. 즉, swap()함수 안에서 다른 공간에 변수 a가 새로 만들어졌다는 뜻입니다. 이처럼 함수를 호출하면서 전달값으로 변수를 넘기면 호출한 함수 안에서는 변수 자체가 아닌 전달받은 변수의 값만 복사해서 사용합니다. 이를 값에 의한 호출(call by value)이라고 합니다.
그림 7-8 값에 의한 호출