Call by Value, Call by Reference

우종현·2024년 2월 28일
0

CS

목록 보기
4/8

Call by Value와 Call by Reference는 함수가 인수를 전달할 때 사용되는 방식을 나타낸다.

Call by Value

Call by Value는 함수가 매개 변수로부터 전달받은 값을 복사하여 처리하는 방식이다.
변수가 가진 값을 복사하여 전달하므로 함수 내에서 값을 변경해도 원본 값은 변경되지 않는다.

int Add(int a)
{
	return a+1;
}

int main()
{
	int x = 10;
    
	Sum(x); // 11
    std::cout<< x; //10
}

다음과 같이 복사하여 처리하기 때문에 원래의 값이 보존 된다. 그러나 복사를 하기 때문에 메모리가 사용량이 늘어난다.

Call by Reference

Call by Reference는 함수 호출 시 매개 변수로 전달되는 변수의 참조 값을 함수 내부로 전달하는 방식이다. 이 방식에서는 함수 내에서 매개 변수로 전달된 변수의 값을 변경하면, 호출한 쪽에서도 해당 변수의 값이 변경된다.
매개 변수로 전달되는 값이 변수의 주소이므로, 함수 내에서 변수의 값을 변경하면 해당 주소에 저장된 값이 변경되기 때문이다.

int Swap(int &a, int &b)
{
	int temp;
    
    temp = a;
    a = b;
    b = temp;
}

int main()
{
	int x = 5;
    int y = 10;
    
    Swap(x, y); // x = 10; y = 5;
    
}

예시의 Swap 함수에 x,y의 참조 값을 전달하면, Swap 함수의 a, b에도 x, y의 참조 값이 복사된다. 함수 내부에서 a, b 값을 변경하면 원본 x, y 값도 함께 변경된다. 참조에 의한 전달은 복사하지 않고 직접 참조를 하기에 속도가 빠르다.

0개의 댓글