반응형
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 |