void Swap(int *p1, int *p2)
{
int *temp=p1;
p1=p2;
p2=temp;
}
int main(void)
{
int num1=10, num2=20;
int *ptr1, *ptr2;
ptr1=&num1, ptr2=&num2;
printf("*ptr1, *ptr2: %d %d \n", *ptr1, *ptr2);
Swap(ptr1, ptr2);
printf("*ptr1, *ptr2: %d %d \n", *ptr1, *ptr2);
return 0;
}
여기서 함수 호출된 다음 다시 메인함수로 반환할때 pt1과 pt2에 저장되어 있는 값인
ptr2의 주소값, ptr1의 주소값이 순서대로 반환되서
애스크리터 붙여서 출력해보면 바뀐 값이 나와야 되는거 아닌가요??
이거 설명좀 해주실분....
포인터 스왑 프로그램인데... 이해가 안되
행복한찻집(whdrjs12)
2012-04-19 19:32
추천 0
댓글 21
다른 게시글
-
아이러브후숙제마스타(211.117) | 12.04.19추천 0
-
SSM 모집하는거 프리젠테이션 들어봤는데나리링(atrixuser) | 12.04.19추천 0
-
시험끝SODMaster(bsmoo) | 12.04.19추천 0
-
난 이만 퇴근함 [2]알렉산더K(jsjin) | 12.04.19추천 0
-
요새 나오는 미연시 게임들 보면 참 답답하다. [3]야요이(firebat33) | 12.04.19추천 0
-
ㅇㅇ 아이러브후 미안 ^-^ [2]니 코 가..(doorags) | 12.04.19추천 0
-
안드로이드 헬프!! 아- 어허헝 ㅠㅠ 잦같은 케이티텍 ICS 폰 ㅠㅠ [2]☎v2.2™(roidz) | 12.04.19추천 0
-
컴구조 문제맞추면 초천재 [8]컴구조(59.18) | 12.04.19추천 0
-
형들 사람들이 비쥬얼베이직을 은근히 무시하는 경향이 있는건 왜일까? [4]ㅋㅋ(218.37) | 12.04.19추천 0
-
ㅋㄱ야 소멤쉽에 대해 잘아니 [4]니 코 가..(doorags) | 12.04.19추천 0
스왑함수가 잘못된거같은데
포인터 다시공부추천
그니까 설명을 해바 함수호출할때 주소값으로 전달하고 스왑함수에서 받을때 더블포인터로 받아야되는거 알겠는데(풀이는 했다는말임) 근데 이대로 해도 바뀌어야 되는거 아니냐고... 왜 안되는지 설명좀 해달라구영
포인터 다시공부하면서 콜바이레퍼런스 인터넷에쳐봐 잘나와
답 안해주는 이유는 좀 찾으면서 해봐.. 무턱대고 묻지말고... 잘나온다 인터넷에도 그리규 교재뭐냐?
아니.. 그거 아는데 지금 함수호출할때 인자 전달을 ptr1값이랑 ptr2값을 주고있자나 이 두개 변수가 갖고 있는 값 자체가 주소값이자나. 그럼 &안붙여도 자동으로 콜바이레퍼런스로 되는거 아님?
초잉여님 빨리 리플점 ㅠㅠ 현기증남..
일한다 이놈아
swap(&num1, &num2)이런식으로 받아야지 ㅡㅡ 너 다시공부하라니까... 지금 다이상함
존나 어렵게 만들어놨네 허허
포인터를 이용한 스왑인데 swap(&num1, &num2) 해버리면 그냥 넘 변수에 직접적으로 접근해서 변수값을 바꾸는거자너.. 글케 말고 포인터를 이용해서 바꿀때 말이여. ptr1이 num1의 주소를 가지고 있는데 함수호출할때 ptr1의 값을 넘기면 자동적으로 주소를 넘겨주게 되서 ptr1이랑 ptr2가 가진 값(주소값)이 스왑되어야 되는거아니냐구
ptr1의 값과 ptr2의 값을 스왑한다는 얘기야.
아오 일단 네놈때매 집가서 니코드 실행해본다 ㅡㅡ
야이 미친놈아 ptr이 뭔데 ㅋㅋㅋㅋㅋㅋㅋ num을 가르키는 포인터잖아
아니다 일단 너때매 나도햇갈림 가서 코드쳐본다 ㅅㅂ
그니까 함수호출할땐 ptr을 넘겨주자나 그럼 ptr이 갖고 있는 값은 num의 주소값이고 그러니까 pt1이랑 pt2는 num의 주소를 받게 되는거자나
야 그리고 바꿀려면 스왑함수내에서도 *붙여
함수안에서 주소 바꿔치면 값이 바뀌냐?
ㅇㅇ 이거 문제 해결은했어.. 스왑함수 호출할땐 &넣어서 넘기고 받을땐 더블포인터로 받고.. 근데.. 이렇게 해도 안되는 이유를 모르겠단거지 ㅠㅠ
ptr1 이랑 ptr2 에 바뀐 주소값을 박아준것도 아니고 이건 뭔
존니 이상하게하네