간단한 swap 함수를 작성하였습니다.
void fnSwap(int& first, int& second)
{
int temp = first;
first = second;
second = temp;
}
사용은 별도로 참조형을 선언한다든지 할 필요 없이, 다음과 같이 변수를 직접 파라미터로 사용합니다.
int a{10}, b{20};
fnSwap(a, b);
참조형을 입력 인자로 넣을 때도 마찬가지입니다.
int a{10}, b{20};
int &ra{a}, &rb{b};
fnSwap(ra, rb);
즉, 참조형으로 선언된 파라미터는 원본을 전달하라는 의미로 컴파일러가 이해를 하고 있다고 알고 있으면 됩니다.
따라서 포인터 변수를 이용하여 위 함수를 호출할 경우라도 어렵게 생각하지 않고 우리가 적용하려고 하는 대상을 파라미터로 입력합니다.
int a{10}, b{20};
int *pa{&a}, *pb{&b};
fnSwap(*pa, *pb);
아래와 같이 입력한다면 a
와 b
의 값이 아닌 pa
가 가리키는 값과 pb
가 가르키는 값이 변경됩니다. 즉, pa
는 b
를 pb
는 a
를 가리키게 됩니다. ( 물론 컴파일하는 동안 잘못 작성된 것이 아닌지 확인하라는 경고가 발생합니다. )
fnSwap((int&)pa, (int&)pb);
std::cout << a << " " << b << std::endl; // 10, 20;
std::cout << *pa << " " << *pb << std::endl; // 20, 10;
'프로그래밍 언어 > C++' 카테고리의 다른 글
[C++] 서식을 사용한 문자열 생성자 (0) | 2021.05.17 |
---|---|
C++ 기본입력 (문자열 입력받기) (0) | 2020.02.10 |
C++ 가변 배열(Variable Sized Arrays) (0) | 2020.02.10 |
C++ String (0) | 2018.10.19 |
C++ 클래스(Class) (0) | 2018.07.06 |