더블 포인터에 관해
연다홍
#include stdio.h
void SwapInPtr(int* dp1, int* dp2) //이부분을 더블이 아닌 싱글 포인터로 주목!!!!!!!!!!!!!
int * temp= dp1;
*dp1=*dp2; //이부분을 주목!!!!!!!!!!!!!
dp2=temp;
int main()
{
int num1=10, num2=20;
int * ptr1, * ptr2;
ptr1=&num1, ptr2=&num2;
printf(%d %d \n, * ptr1, * ptr2);
SwapInPtr(ptr1, ptr2);
printf(%d %d \n, *ptr1, *ptr2); .
return 0;
}
위의 값은 바뀌어서나옵니다 더블이아닌 싱글포인터로 했는데 말이죠....
책에서보면 (아.... dp1=dp2; 이긴했지만)그래도 dp1과 pt1, dp2와 pt2는 별개아닌 가요??
단순히 ptr1이나 pr2의 메모리 주소값을 dp1이나 dp2에 대입시키는거아닌가요??
#include stdio.h
void SwapInPtr(int**dp1, int**dp2)
{
int * temp=*dp1;
*dp1=*dp2;
*dp2=temp;
int main()
{
int num1=10, num2=20;
int * ptr1, * ptr2;
ptr1=&num1, ptr2=&num2;
printf(%d %d \n, * ptr1, * ptr2);
SwapInPtr(&ptr1, &ptr2):
printf(%d %d \n, *ptr1, *ptr2);
return 0;
}
위의 소스가 책에 나온 방법입니다 위의 방식은 이해가는데 맨의 방식은 잘 모르겠네요...
-
가온누리
debug 모드로 직접 SwapInPtr 실행후 뒤바뀐게 num1, num2 인지 아니면 ptr1, ptr2 인지를 보시면 될 듯해요.