C언어 스왑질문입니다...

등짝을보자의 이미지

#include <stdio.h>
 
int swap(int a,int b);
 
int main()
{
	int a = 1;
	int b = 2;
 
	swap(a,b);
 
	printf("main     : a : %d , b : %d \n",a,b);
 
	return 0;
}
 
int swap(int a,int b)
{
	int temp ;
 
	temp = a ;
	a = b ;
	b = temp ;
 
	printf("external : a : %d , b : %d \n",a,b);
 
	return 0;
}

이렇게 하면 a,b 값이 교환이 안되잖아요...
이 문제를 해결하기 위해서는 포인터를 쓰면 되던데

왜 포인터을 써야만 값이 교환되나요??

그 원리가 궁금합니다..

세벌의 이미지

Call by Value, Call by Name 에 관해 찾아보시면 답이...

http://sebul.sarang.net/