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
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기