반응형
call-by-value
함수를 호출할 때 단순히 값을 전달하는 형태. (값의 복사)
값을 반환하지 않는 이상, 함수 안에서 파라미터로 받은 값에 변화가 일어나도 진짜 변수에 영향을 끼치지 않는다.
void swap(int a,int b)
{
int temp = b;
b = a;
a = temp;
};
void main()
{
int num1 = 10;
int num2 = 20;
swap(num1,num2);
printf("num1:%d num2:%d\n",num1,num2); // 값이 바뀌지 않는다.
}
call-by-address
메모리의 접근에 사용되는 주소 값을 전달하는 형태 (포인터 사용)
void swap(int* a, int* b) // 파라미터로 주소값을 받고, 함수 안에서는 주소가 가리키는 값을 바꾼다.
{
int temp = *b;
*b = *a;
*a = temp;
};
void main()
{
int num1 = 10;
int num2 = 20;
swap(&num1,&num2);
printf("num1:%d num2:%d\n",num1,num2);
}
call-by-reference
call by address와 비슷하다. 포인터가 아닌 참조자를 사용해서 변수에 직접 접근한다.
void SwapByRef2(int& ref1, int& ref2) // 변수에 직접 접근하여 값을 바꾼다.
{
int temp = ref1;
ref1 = ref2;
ref2 = temp;
}
반응형