CallbyValue vs CallByReference

김진회·2022년 11월 27일
0

cs

목록 보기
3/14

인자를 전달하는 방법은 크게 두 가지가 있다. Call by value, Call by Reference를 알아보자.

1. Call by Value

값에 의한 호출. 함수 호출 시, 전달 되는 변수의 값을 복사해서 함수의 인자로 전달하는 방식이다.
복사 후, 추가적인 메모리 공간을 할당받아 쓰기 때문에 함수의 인자 값을 바꿔도 원래 변수의 값은 바뀌지 않는다.


2. Call by Reference

복사를 하는 것이 아닌 참조를 한다. 즉, 주소룰 확인해서 해당 값을 가져오는 것이다. 동일한 주소를 참조하기 때문에 한 곳에서 값을 바꾸면 다른 곳에서도 동일하게 값이 바뀐다. ex. C/C++의 포인터


3. 그렇다면 자바는?

이번 포스팅을 쓰는 이유이다. 자바는 포인터를 쓰지 않는다. 하지만 함수의 인자로 객체를 전달하면 인자의 객체값을 바꾸면 전달한 객체값도 바뀌게 된다. 그렇다면 자바는 Call by Value와 Call by Reference를 둘 다 쓰는 것일까?

정답은 자바는 전부 Call by Value를 사용한다.

자바는 Call by Reference를 쓰지 않는다.
Call by Reference는 앞서 말했듯이 해당 주소를 참조해서 해당 값을 가져오는 것이다. 자바는 해당 주소를 참조하는 것이 아닌 주소값을 복사하고 저장하여 해당 주소로 가는 것이다. 이는 다르다.

주소를 직접 참조해서 해당 주소로 가서 값을 가져오느냐
vs
주소값을 복사해서 해당 주소로 가는 것이냐

더 궁금하다면?

해당 포스팅에서는 메모리 영역을 포함한 자세한 설명이 있으니 궁금하면 보도록 하자.
https://bcp0109.tistory.com/360

https://re-build.tistory.com/3

profile
SSAFY 7기. HMG. 협업, 소통, 사용자중심

0개의 댓글