Call by Value와 call by Reference에 대해 알아보고 차이를 배우기
질문
- Call by Value의 특징, 장단점
- Call by Reference의 특징, 장단점
- C와 C++에서의 사용법은?
Call by Value와 Call by Reference
값에 의한 호출, 참조에 의한 전달(Pass by Reference)
- 함수 호출 시 인수를 전달하는 방식
- 함수 내부에서 인수 값이 어떻게 처리되는지
- 함수 종료 후 원본 데이터가 어떻게 변하는지에 따라 차이가 있음
Call by Value
값에 의한 호출
- 함수에 값을 복사해 전달하는 방식
- 함수 내부에서는 원본 값의 복사본만을 사용
- 함수 내부에서 해당 값이 변경되어도 원본 데이터에는 영향 없음
- 데이터 크기가 큰 경우, 복사본 생성으로 인해 메모리 사용량이 늘어날 수 있음
Call by Reference
참조에 의한 호출
- 함수에 변수의 참조(메모리 주소)를 전달하는 방식
- 함수 내부에서 원본 데이터를 직접 참조
- 함수 내부에서 해당 값이 변경되면 원본 데이터에도 영향
- 원본 데이터를 직접 조작 가능
- 복사본을 생성하지 않으므로 효율적
C에서의 Call by Value, Call by Reference
C는 C++와 다르게 참조자(Reference)가 없기 때문에 포인터를 사용하여 Call by Reference 방식을 구현
- 전달 인자에 주소값(포인터)을 전달해 참조에 의한 전달을 구현