c언어 기초적인 swap함수 포인터 관련 질문입니다. ㅠ
핫자두
2023.04.01
swap 함수 관련하여
void swap(int *a,int *b)
{
int *temp;
temp = a;
a = b;
b = temp;
}
저는 이런식으로 생각하고 짰는데요..
원래 call by reference 로 하면
void swap(int *a,int *b)
{
int temp;
temp = *a;
*a = *b;
*b = *temp;
}
이게 정답인데..
첫번째 꺼로 왜 안되는지 이해가 안가네요.. 가르키는 주소를 바꾸면 똑같이 바뀌지 않나요?
제가 뭔가 개념을 아직 잘 못잡은거같은데.. 너무 기초적인거 여쭤봐서 죄송해요 ㅠ
군 전역후 다시 공부를 시작하려니 하나도 모르겠네요..
답변 부탁드려요 ^^
-
재찬
Call by value로 swap을 작성하면 왜 안되는지 잘 생각해 보세요. 첫번째 경우는 Call by value입니다.