programmer '프로그래머'
Call by Value/Call by Reference
김동준.
2024. 8. 21. 22:59
함수 호출 시 매개변수 전달 방식인 "Call by Reference"와 "Call by Value"는 프로그래밍 언어에서 매우 중요한 개념입니다. 이 두 가지 방식은 함수 내에서 매개변수가 어떻게 전달되고 처리되는지에 대해 다른 동작을 합니다.
1. Call by Value (값에 의한 호출)
- 개념:
Call by Value는 함수에 인수를 전달할 때, 해당 인수의 값을 복사하여 함수에 전달하는 방식입니다. 함수 내부에서는 복사된 값을 사용하며, 이 값은 함수가 종료될 때까지 함수 내부에서만 유효합니다. - 동작:
함수 내에서 매개변수의 값을 변경해도, 원래의 인수에는 아무런 영향을 미치지 않습니다. 이는 함수가 외부에서 전달받은 값의 복사본을 사용하기 때문입니다.
2. Call by Reference (참조에 의한 호출)
- 개념:
Call by Reference는 함수에 인수를 전달할 때, 인수의 참조를 함수에 전달하는 방식입니다. 참조를 전달받은 함수는 원래의 인수와 동일한 메모리 주소를 참조하게 됩니다. - 동작:
함수 내에서 매개변수의 값을 변경하면, 이는 원래의 인수에도 영향을 미칩니다. 함수가 인수의 참조를 직접 조작하기 때문에, 함수 외부의 변수 값도 변경됩니다.
차이점 요약
- 변경 여부:
- Call by Value: 함수 내에서 매개변수를 변경해도 원본 변수는 변경되지 않음.
- Call by Reference: 함수 내에서 매개변수를 변경하면 원본 변수도 변경됨.
- 메모리 사용:
- Call by Value: 함수 내에서 새로운 메모리 공간을 사용하여 값이 복사됨.
- Call by Reference: 기존 메모리 공간을 참조하여 사용, 추가 메모리 할당 없음.
- 주요 사용 사례:
- Call by Value: 원본 데이터를 보호해야 할 때 사용. 값이 변경되지 않도록 하려는 경우.
- Call by Reference: 함수 내에서 원본 데이터를 직접 수정해야 할 때 사용. 큰 데이터를 복사하는 오버헤드를 줄이기 위해 사용.