[CS] 6) Call by value와 Call by reference

songh·2024년 2월 19일
0

CS지식

목록 보기
7/35

Call by value

함수 호출시 메모리 공간 안에서는 함수를 위한 별도의 임시공간이 생성된다. 이 방식은 함수 호출시 전달되는 변수의 값을 복사해서 함수 인자로 전달한다. 이때 복사된 인자는 함수 안에서 지역적으로 사용되므로 지역변수의 속성을 가진다.

📍따라서 함수 안에서 인자 값이 변경되어도 외부 값은 변경되지 않는다. 하지만 인자를 넘길때마다 메모리 공간을 할당해야해서 메모리 공간을 더 잡아먹는다.

Call by reference

이 방식은 함수 호출 시 인자로 전달되는 변수의 주소를 전달한다. 따라서 함수 안에서 인자의 값이 변경되면 해당 주소에 있는 객체의 값도 변경된다.

📍메모리 할당 문제는 해결되나, 원본 값이 변경될 수 있다는 위험이 있다.


자바의 경우 항상 call by value로 값을 넘긴다. 변수의 주소값 자체를 가져올 방법이 없고 이를 넘길 수 있는 방법도 없기 때문이다. 따라서 참조 자료형을 넘길때 해당 객체의 주소값을 복사해서 이를 가지고 사용한다.

📍따라서 원본 객체의 프로퍼티까지는 접근이 가능하지만 원본 객체 자체를 변경할 수는 없다.

0개의 댓글

관련 채용 정보