[C++] Call by value, Call by reference
Updated:
Call by value
- 값에 의한 호출
- 함수 인자로 넘기는 값을 복사해서 새로운 함수에 전달
- 값을 인자로 전달하는 함수 호출 방식
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int num1 = 1;
int num2 = 2;
cout << num1 << " ";
cout << num2 << "\n";
swap(num1, num2);
cout << num1 << " ";
cout << num2 << "\n";
/*
출력 :
1 2
1 2
*/
return 0;
}
Call by reference
- 참조에 의한 호출
- 주소 값을 인자로 전달하는 함수 호출
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int num1 = 1;
int num2 = 2;
cout << num1 << " ";
cout << num2 << "\n";
swap(num1, num2);
cout << num1 << " ";
cout << num2 << "\n";
/*
출력 :
1 2
2 1
*/
return 0;
}
참조자를 이용한 Call by reference
- C++에서는 함수 외부에 선언된 변수에 접근하는 방식이 두 가지
- 주소 값을 이용한 Call-by-reference (Call-by-address)
- 참조자를 이용한 Call-by-reference
- 참조자는 같은 데이터 공간을 가리키는 변수지만 이름만 다름
- 선언되는 변수 앞에
&
가 붙으면 참조자
void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
Leave a comment