티스토리 뷰
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
'PL > Programming Language' 카테고리의 다른 글
[PL][WIP] 프로그래밍 언어의 발전 (0) | 2021.12.15 |
---|---|
[PL][WIP] 파이썬으로 Lexical Analyzer 만들기 (0) | 2021.11.02 |
[ProgrammingLanguage][WIP] Syntax(구문), Semantic(의미론) 이해하기 (0) | 2021.10.05 |
[ProgrammingLanguage] 언어 구현하기- Compilation, Pure Interpretation, Hybrid, Preprocessor (0) | 2021.09.10 |
[ProgrammingLanguage] 폰 노이만 구조, 병목 (0) | 2021.09.10 |