✨Method를 호출 할 때 파라미터를 전달하는 2가지 방법
Method를 호출할 때 파라미터에 값을 복사해서 넘겨준다.
복사된 인자 값은 함수 안에서만 사용되는 Local Value의 특성을 가지고 있다.
Method 안에서 인자 값이 변해도 외부의 변수 값은 변하지 않는다.
장점 : 복사하여 처리하기 때문에 외부의 변수 값이 안전하다. 원래의 값 보존
단점 : 복사를 하기 때문에 메모리 사용량이 늘어난다.
#include <iostream>
using namespace std;
void Swap(int x, int y)
{
//3. Method 내부의 값 변경
int tmp = x;
x = y;
y = tmp;
}
int main()
{
//1. main 에서 변수 선언
int a = 100;
int b = 777;
//2. Method 호출
Swap(a, b);
cout << "a : " << a << endl;
cout << "b : " << b << endl;
}
✔️ 최초 프로그램이 실행되면, 메모리의 Stack 영역에 위 변수가 할당된다.#include <iostream>
using namespace std;
void Swap(int *a, int *b)
{
//3. Method 내부의 값 변경
int tmp = *a;
//①
*a = *b;
//②
*b = tmp;
}
int main()
{
//1. main 에서 변수 선언
int a = 100;
int b = 777;
//2.Method 호출
//***main a,b값의 주소값 넘김
Swap(&a, &b);
cout << "a : " << a << endl;
cout << "b : " << b << endl;
}
✔️ 메모리의 Stack 영역에 위 변수가 할당된다.
참고자료
1) https://programist.tistory.com/entry/C-%EC%96%B8%EC%96%B4-Call-by-Value%EA%B0%92%EC%97%90-%EC%9D%98%ED%95%9C-%ED%98%B8%EC%B6%9C-Call-by-Reference%EC%B0%B8%EC%A1%B0%EC%97%90-%EC%9D%98%ED%95%9C-%ED%98%B8%EC%B6%9C%EC%9D%98-%EC%9D%B4%ED%95%B4
2) https://bcp0109.tistory.com/360
3) https://kangworld.tistory.com/64