c++

참조에 의한 호출 call by reference

TIM_0529 2021. 8. 26. 13:11
반응형

call by reference 함수는 주소 값을 전달받아서, 함수 외부에 선언된 변수에 접근하는 형태의 함수 호출을 말한다.

바로 예시를 보여드릴게요

#include <iostream>
using namespace std;

void Swap(int& a, int& b);

int main()
{
	int num1 = 2;
	int num2 = 3;
	Swap(num1, num2);
	cout << "num1 = "<<num1 << endl <<"num2 = "<< num2 << endl;

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

위 코드에 결과는 num1 과 num2가 swap이 되어서 

"num1 = 3

 num2 = 2" 가 출력이 됩니다. call by value와는 어떤 차이가 있길래 이 코드는 정상적으로 작동을 하는 것일까요?

 

주소를 전달받는 다는 말이 있어서 어렵다고 생각할 수도 있지만 예시를 보면 바로 이해가 가능하다 더 간접적인 이해를 위해 추가적인 설명을 해 드리겠습니다.

Swap(int& a,int& b) 함수를 보면 call by value와 다른 것을 찾을 수 있습니다. 바로 &인데요 이것은 참조자라고 부릅니다. 이 것을 사용하면 우리는 변수의 데이터 주소 값을 전달받을 수 있습니다. 데이터 주소 값은 메모리 공간에서 직접적으로 할당을 받아오는 것이기 때문에 다른 함수에서 변수를 직접적으로 조작하여 값을 초기화해 줄 수 있습니다.

다양한 곳에서 사용되기 때문에 반복학습이 중요합니다.

 

반응형

'c++' 카테고리의 다른 글

[c++] 함수의 원형 선언  (0) 2021.08.30
[c++] 객체지향 프로그래밍의 이해  (0) 2021.08.30
값에 의한 호출 call by value  (0) 2021.08.26
매개변수의 디폴트 값 (Default Value)  (0) 2021.08.26
[c++]디폴트 복사 생성자  (0) 2021.03.04