Call by value 값에 의한 호출
함수에서 값을 복사해 전달하는 방식
#include <stdio.h>
void Swap(int x, int y)
{
int temp = x;
x = y;
y = temp;
}
int main()
{
int a = 10;
int b = 20;
Swap(a, b);
printf("a: %d, b: %d", a, b);
}
Swap 함수의 매개변수 x, y가 함수 호출과 동시에 선언되면서 인자로 전달받은 a, b의 데이터 값이 들어가게 된다
int x = a;인 셈
데이터 값만 복사되어 들어갔기 때문에 원본에 영향을 끼치진 않는다 Swap 함수 실행 후에도 a, b의 값은 바뀌지 않음
Call by reference 참조에 의한 호출
함수에서 주소값을 복사해 전달하는 방식
#include <stdio.h>
void Swap(int* x, int* y)
{
int temp = x;
x = y;
y = temp;
}
int main()
{
int a = 10;
int b = 20;
Swap(&a, &b);
printf("a: %d, b: %d", a, b);
}
a, b 변수의 주소값을 참조하여 값을 변경했기 때문에 원본 데이터 값이 변경된다
Call by value vs Call by reference
Call by value
- 장점: 복사하여 처리하기 때문에 원본의 값이 보존된다
- 단점: 직접 복사하기 때문에 메모리 사용량이 증가하고 속도가 느리다
Call by reference
- 장점: 직접 참조하므로 속도가 빠르다
- 단점: 원본 값이 영향을 받는다
'c++' 카테고리의 다른 글
[C++] 가상 함수 - virtual (0) | 2023.06.08 |
---|---|
[C++] 객체 지향 프로그래밍(OOP, Object Oriented Programming) (0) | 2023.06.08 |
[C++] 객체 생성 시 초기화 (0) | 2023.06.07 |
[C++] 메모리 동적 할당 및 해제 - new, delete (0) | 2023.06.07 |
[C++] 메모리 동적 할당 및 해제 - malloc, calloc, realloc, free (0) | 2023.06.07 |
댓글