
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
callByValue(a, b) 함수의 주소와 main 함수에 있는 a 와 b의 주소는 왜 다른 건가요?
그리고 callByValue 에서 값을 바꿔주었는데 printMessage 에서는 왜 값이 안 바뀐건가요?
callByReference(a, b) 함수의 주소와 main 함수의 주소는 왜 같은 건가요?
그리고 callByValue 에서는 값을 바꿔도 안 바뀌었는데 callByReference에서는 바뀐 이유가 궁금합니다ㅠ
작성한 코드 및 에러 메세지
#include <iostream>
using namespace std;
void printMessage(int a, int b);
void callByValue(int a, int b);
void callByReference(int &a, int &b);
int main()
{
int a = 10;
int b = 20;
cout << "&a: " << &a << endl;
cout << "&b: " << &b << endl;
cout << "callByValue" << endl;
printMessage(a, b);
callByValue(a, b);
printMessage(a, b);
cout << "callByRefernece" << endl;
printMessage(a, b);
callByReference(a, b);
printMessage(a, b);
return 0;
}
void printMessage(int a, int b)
{
cout << "------------" << endl;
cout << "a: " << a << endl;
cout << "b: " << b << endl;
cout << "------------" << endl;
}
void callByValue(int a, int b)
{
cout << "IN callByValue" << endl;
cout << "&a: " << &a << endl;
cout << "&b: " << &b << endl;
int tmp = a;
a = b;
b = tmp;
}
void callByReference(int &a, int &b)
{
cout << "IN callByReference" << endl;
cout << "&a: " << &a << endl;
cout << "&b: " << &b << endl;
int tmp = a;
a = b;
b = tmp;
}
