C++ 인자 전달 방식 (값, 참조, 포인터)
1. 개요
1.1 문서 개요
이 문서는 C++에서 함수 호출 시 사용되는 인자 전달 방식인 값 전달, 참조 전달, 포인터 전달에 대해 설명합니다. 이들 방식은 함수의 매개변수가 원본 데이터에 어떤 영향을 미치는지, 복사와 성능에 어떤 차이가 있는지를 결정하는 중요한 요소입니다.
2. 내용
2.1 값에 의한 전달 (Call by Value)
2.1.1 특징 및 예시
값 전달은 매개변수의 복사본을 함수 내부에서 사용하는 방식입니다. 원본 값에는 영향을 주지 않습니다.
void modify(int x) {
x = 10;
}
함수 호출 시:
int a = 5;
modify(a); // a는 여전히 5
2.2 참조에 의한 전달 (Call by Reference)
2.2.1 특징 및 예시
참조 전달은 변수의 별칭(alias)을 전달하므로, 함수 내부에서 수정 시 원본 값도 변경됩니다.
void modify(int& x) {
x = 10;
}
호출 예:
int a = 5;
modify(a); // a는 10으로 변경됨
2.3 포인터에 의한 전달 (Call by Pointer)
2.3.1 특징 및 예시
포인터 전달은 메모리 주소를 통해 값을 조작하며, null 체크 등 추가 제어가 가능합니다.
void modify(int* x) {
if (x != nullptr) *x = 10;
}
호출 예:
int a = 5;
modify(&a); // a는 10으로 변경됨
3. 마무리
C++에서 인자 전달 방식은 함수의 동작과 성능에 직접적인 영향을 미칩니다. 값 전달은 안전성을 제공하지만 복사 비용이 있으며, 참조와 포인터 전달은 원본 데이터를 직접 조작할 수 있어 효율적이지만 주의가 필요합니다. 각 방식은 사용 목적에 따라 선택적으로 활용됩니다.