요약
- 함수(메서드)를 호출할 때, 매개변수(파라미터)를 전달하는 방식
- Call by Value: 값을 전달
- Call by Reference: 주소를 전달
- 언어마다 다름
정의/특징
Call by Value
- 함수의 매개변수를 전달할 때 값을 직접 전달 → 값을 복사하여 처리+
- 함수 호출자(Caller)의 변수와 수신자(Callee)의 변수는 서로 다른 변수
- 함수 안에서 전달받은 값을 변경하여도 원본은 변화 X
Call by Reference
- 함수의 매개변수를 전달할 때 주소를 전달 → 주소에 해당하는 값을 직접 참조
- 함수 호출자(Caller)의 변수와 수신자(Callee)의 변수는 서로 같은 변수
- 함수 안에서 전달받은 값을 변경하면 원본도 변경
Java?
⇒ 자바는 값에 의한 호출

Primitive Type 전달
함수 안에서 변수를 변경하여도 원본에는 영향이 없다.

Reference Type 전달
함수 안에서 객체의 변수를 변경하면 객체의 값이 변경된다.
→ Call by Reference처럼 보이지만 아님
→ 참조 타입 변수는 원래 스택에 주소값만 저장 됨
→ 객체의 주소값이 복사되어 함수로 넘겨졌기 때문
Kotlin?
⇒ 코틀린도 당연히 값에 의한 호출