PL/Programming Language

[PL] pass by value와 pass by reference (그리고 pass by assignment)

SweetDev 2021. 12. 8. 16:52

대부분의 언어에서는 pass by value를 쓴다. 그것이 안전하기 때문!!!

 

pass by value

함수 호출 시에 매개변수의 값을 복사해서 전달한다. 

 

int val = 3

add(val)

 

add함수 안에서 인자는 바꿔보았자 바깥이 val이 바뀌지 않는다. 

 

pass by reference

인자로 받은 값을 바꾸면 바깥의 값도 바뀐다. 

 

c에서는 아예 pass by reference 지원하지 않고, c++에서는 pass by reference도 지원한다. 

c에서 간혹 가다 포인터를 매개변수로 넘겨주는 것을 pass-by-reference로 가르치는 경우가 있는데 이는 명백한 오류이다.

 

pass by assignment

 mutable한 오브젝트면 pass-by-reference방식으로, immutable한 reference면 pass-by-value방식으로 동작한다. (python에선 모든 type을 오브젝트로 취급한다) 

 

출처

https://showx123.tistory.com/56