(1) 싱글 포인터의 swap() 함수

- 변수 A, B의 주소값을 넘겨 swap() 함수에서 포인터변수 a와 b에 저장한다.
- call by reference 는 참조에 의한 호출로 인자로 전달된 주소가 가리키는 변수의 조작을 함수 내에서 가능하게 한다.


(2) 더블 포인터의 swap() 함수

- 싱글 포인터 처럼 포인터 pA와 pB 값을 넘기면 call by reference가 아니라 call by value가 되어 값의 복사가 일어난다.
- 그렇기 때문에 포인터 pA와 pB의 주소값을 넘겨준다.
-  pA와 pB는 싱글 포인터이므로, 이들의 주소값은 더블 포인터를 통해서 저장되어야한다. (**a 와 **b)
-  swap()함수 내에서는 **a -> *pA -> A 를 가리키게 된다.
- 더블 포인터의 call by reference를 통해 swap()함수 내에서 pA가 가리키는 값과 pB가 가리키는 변수를 변경 가능하다.

 

(3) 결과

 - 결과는 싱글 포인터와 더블 포인터가 동일하다.


by 민트앤라떼 2012. 6. 26. 14:39