Machineboy空

값에 의한 호출 (call by value) vs 참조에 의한 호출(call by reference) 본문

Computer/자료구조

값에 의한 호출 (call by value) vs 참조에 의한 호출(call by reference)

안녕도라 2024. 1. 15. 18:32

함수에 값을 전달 할 때 두 가지 방법

Call by Value(값에 의한 호출) Call by Reference(참조에 의한 호출)
매개변수로 전달되는 변수를 모두 함수 내부에서 복사해서 함수 실행

함수 내부에서 전체 복사가 일어나고 실제 변수와는 다른 주소에 할당

실제 변수의 주소값 != 매개변수로 전달된 변수의 주소값
변수의 주소를 매개변수로 함수에 전달하는 함수
원본값 변경 X 원본값 변경 O
primitive한 타입 등에 적합
byte, short,int,long,float,double,boolean,char
reference타입 : 인스턴스화 가능한 모든 클래스의 배열에 적합
String, struct,class,int[], string[]
복사가 일어나지만 간단하기 떄문에 복사에 대한 코스트가 크지 않다. 전체 크기가 커서 복사하는데 드는 코스트가 더 크다.

ex.너무 많은 배열을 복사할 경우 시간초과가 나기도

*코스트: 해당 복사에 드는 CPU 시간, 메모리 등