Call by Value & Call by Reference
@sberryyogurt
Call by Value & Call by Reference의 차이점
두 방법 모두 함수에게 인자를 전달한다는 것은 같습니다.
7
Main
5 B A
Ref.
Call by Reference의 경우 주소 값을 넘깁니다.
7
Main
5 7 5
Ref.
Call by Reference의 경우 주소 값을 넘깁니다.
7
Main
5 7 5
Ref.
Call by Reference의 경우 주소 값을 넘깁니다.
이렇게 할 수도 있음
7
Main
5 7 5
Ref.
Call by Reference의 경우 주소 값을 넘깁니다.
결과는 동일하다.
7
Main
5 7 5
Ref.
Call by Reference의 경우 주소 값을 넘깁니다.
주소 값을 보면
같다는 것을 알 수 있다.
7
Main
5 7 10
Ref.
Call by Reference의 경우 주소 값을 넘깁니다.
그렇기 때문에
7
Main
10 7 10
Ref.
Call by Reference의 경우 주소 값을 넘깁니다.
이런 식으로…
Swap을 하기 위해 다음과 같이 함수를 작성합니다.
Swap을 하기 위해 이번엔 Call by Reference로 해봅니다.
Call by Value의 한계
호출 된 함수에서 값을 변경하더라도 호출 한 쪽에선 변화가 없습니다.
Call by Value의 한계
그래서 Return문을 사용하죠
호출 된 함수에서 값을 변경하더라도 호출 한 쪽에선 변화가 없습니다.
호출 받은 함수에서 원본 인자 값을 건드려야 한다면…
Call by Reference 를 사용
Call by Reference 를 사용
원본 값이 변경될 위험성이 존재
Call by Value 를 사용
실제 데이터 유지 가능
어떤 것이 더 좋고, 안 좋고의 구분은 의미가 없다.