1. Call by value
=> 인수의 값을 함수의 매개변수로 복사하는 것
=> 즉, 매개변수로 받은 값을 변경하여도 원래 값에 영향을 주지 않음
=> 복사를 하기 때문에 메모리가 추가적으로 소모됨
=> 기본적으로 C / C++ / C#의 경우 call by value
void add(int x)
{
x = x+1;
cout << "value : " << x << endl;
}
int main()
{
int a = 10;
cout << "value : " << a << endl;
add(a);
cout << "value : " << a << endl;
return 0;
}
/* 결과값
value : 10
value : 11
value : 10
*/
2. Call by refence
=> 인수의 주소를 매개 변수로 복사하는 것
=> 주소값을 받아 이용하기 때문에, 값을 변경하면 원래 값도 똑같이 변경
=> 기본적으로 Java는 call by reference
void add(int& x)
{
x = x+1;
cout << "value : " << x << endl;
}
int main()
{
int a = 10;
cout << "value : " << a << endl;
add(a);
cout << "value : " << a << endl;
return 0;
}
/* 결과값
value : 10
value : 11
value : 11
*/
'C++ > Tips' 카테고리의 다른 글
[c++]Overloading vs Overriding (0) | 2021.06.04 |
---|---|
깊은복사(Deep Copy) vs 얕은복사(Shallow Copy) (0) | 2021.05.31 |
[c++/vector]emplace vs push_back (0) | 2021.03.30 |
[C/C++] #define , #undef (0) | 2021.03.23 |
[c/c++] 주석 (0) | 2021.03.16 |