제가 이중포인터를 공부하는데 헷갈리는부분이 있어서요
일단 이것이 일반 포인터만 사용해서 주소값을 바꿀려고 시도했습니다.
function call before[address]: 61abd4, 61abd0
function call before[value] : 100, 200
function internal [address]: 61abd0, 61abd4
function internal [value]: 200, 100
function call after[address]: 61abd4, 61abd0
function call after[value] : 100, 200
그럼 당연히 swap에서는 바뀌지만 main 안바뀝니다.
왜냐하면 address value를 줬기때문이죠
그래서 swap 내부안에서 주소값을 swap한다해서 main에 포인터변수에는 영향을 줄수없는것이고요
하지만
이중포인터를 사용하면
function call before[address]: 61abdc, 61abd8
function call before[value] : 100, 200
function internal [address]: 61abd8, 61abdc
function internal [value]: 200, 100
function call after[address]: 61abd8, 61abdc
function call after[value] : 200, 100
이런식으로 서로 swap에서도 main에서도 포인터변수안에 주소값이 서로 바뀌게됩니다.
왜냐하면 이중포인터를 써서 main에 있는 포인터변수에 있는 주소값을 가져온것이 아니라 포인터변수의 주소를 가지고왔기때문이죠
그래서 *pi01 = pivalue01의 기억공간이 되는거죠 그래서 직접 pivalue01포인터변수에 있는값을 이중포인터로 이용하여 변경시킨다
라고 이해하면 될까요?