기타/기타의 기타

c++ 포인터와 referense를 이용한 두 변수 값 바꾸기

팥들었슈_ 2023. 12. 26. 14:35
// Online C++ compiler to run C++ program online
#include <iostream>
using namespace std;

template <typename T>
void pointerSwitch(T* a, T* b){
    // a의 주소 b의 주소를 받음음
    T tmp = *a; // 입력 받은 인수가 주소이기 때문에 값으로 변환

    *a = *b;
    *b = tmp;
}

template <typename T>
void referenceSwitch(T& a, T& b) {
    T tmp = a;
    a = b;
    b = tmp;
}

int main() {
    int a = 10;
    int b = 20;
    cout << *&a;

    cout << "a는" << a << "\n";
    cout << "b는" << b << "\n";    
    cout << "pointer switch \n" ;    
    
    pointerSwitch(&a, &b);
    
    cout << "a는" << a << "\n";
    cout << "b는" << b << "\n";  
    cout << "reference switch \n" ;
    
    referenceSwitch(a, b);
    
    cout << "a는" << a << "\n";
    cout << "b는" << b << "\n"; 
    return 0;
}

 

 

10a는10
b는20
pointer switch 
a는20
b는10
reference switch 
a는10
b는20