기본적으로 C언어에서 지원하는 방식이다. 함수에서 값을 복사해서 전달하는 방식으로, 인자로 전달되는 변수를 함수의 매개변수에 복사한다. 원본 값을 바꿀 필요가 없는 경우에는 call by value 방식을 이용하면 된다.
#include <stdio.h>
void swap(int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int main()
{
int a, b;
a = 10;
b = 20;
printf("swap 전 : %d %d\n", a, b);
swap(a, b);
printf("swap 후 : %d %d\n", a, b);
return 0;
}
swap 전 : 10 20
swap 후 : 10 20
위 코드를 실행해보면 call by value 형식으로는 swap을 진행해도 매개변수가 바뀌는 것일 뿐 원래 변수인 a, b의 값은 변하지 않는다.
함수에서 값을 전달하는 대신 주소값을 전달하는 방식을 call by reference라고 한다.
#include <stdio.h>
void swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
int main()
{
int a, b;
a = 10;
b = 20;
printf("swap 전 : %d %d\n", a, b);
swap(&a, &b);
printf("swap 후 : %d %d\n", a, b);
return 0;
}
swap 전 : 10 20
swap 후 : 20 10
그냥 변수를 넘겨줄 때와는