1 #include<stdio.h>
2 int bon(int**p1,int**p2)
3 {
4 int*temp=*p1; <굼굼증>
5 *p1=*p2; <굼굼증>
6 *p2=temp; <굼굼증>
7 }
8 int main(void)
9 {
10 int num1=10,num2=20;
11
12 int*ptr1,*ptr2;
13 ptr1=&num1, ptr2=&num2;
14
15 printf("num1의 값 : %d ptr1의 값 : %d \n",num1,*ptr1);
16 printf("num2의 값 : %d ptr2의 값 : %d \n",num2,*ptr2);
17
18 bon(&ptr1,&ptr2);
19
20 printf("ptr1 의 값 : 20 ptr1 의 값 : 10 이 되어야 성공입니다! \n");
21 printf("ptr1 의 값 : %d ptr2 의 값 : %d \n\n",*ptr1,*ptr2);
22
23 return 0;
24 }
-------------------------------------------------------------------------------------------
위의 <굼굼증>부분에서
{
int*temp=*p1; // <<= 왜 *p1 이 되어야하죠? 그냥 p1 또는 **p1이 아니고요?
*p1=*p2;
*p2=temp;
}
이중 포인터 문제라는것 까지는 이해를 했습니다.
단순히 선언식 이외 문장에선 *을 하나 차감해서 쓰는것 뿐인가요?
그렇다면
21번째 줄에서
printf("ptr1 의 값 : %d ptr2 의 값 : %d \n\n",*ptr1,*ptr2);
에서 *ptr1,*ptr2 는 왜 차감을 하지않고 포인터* 를 붙여쓰게된건가요?
단순히 차감을 해서 쓰는게 일반이었다면
printf("ptr1 의 값 : %d ptr2 의 값 : %d \n\n",ptr1,ptr2);
문장도 오류가 없어야 될텐데 빌드가 안되네요..
도움좀 주세요. 어디서부터 어떻게 잘못이 됬는지 굼굼합니다.
ps.좋은 아침입니다~^^
|