다른 함수에서 계산을 한 뒤 메인 함수에 있는 값(주소)를 찍어서 값을 변경할 수 있게 해주는 역할을 포인터나 레퍼런스로 할 수 있다.
아래의 그림은 그 중 레퍼런스를 활용한 방법이다.

그리고 예시 코드 이다.
#include <iostream>
using namespace std;
// 함수에 변수에 포인터를 사용한 경우
void swapPtr(int* x, int* y)
{
int temp = *x;
*x = *y;
*y = temp;
}
// 함수에 변수에 레퍼런스를 사용한 경우
void swapRef(int& x, int& y)
{
int temp = x;
x = y;
y = temp;
}
// 함수에 변수만 있는 경우
void swap(int x, int y)
{
int temp = x;
x = y;
y = temp;
}
int main()
{
int a = 1;
int b = 2;
swapRef(a, b);
cout << "레퍼런스 쓴 경우: " << a << " " << b << endl;
swapPtr(&a, &b);
cout << "포인터를 쓴 경우: " << a << " " << b << endl;
swap(a, b);
cout << "변수만 쓴 경우: " << a << " " << b << endl;
return 0;
}