자료구조와 알고리즘(C++)
[자료구조와 알고리즘] Call by Value VS Call by Reference
susot
2025. 3. 19. 23:46
C++ 에는 3종류의 인수 전달 방식이 존재합니다
- Call by Value
- Call by Reference
- Call by Address
오늘은 Value와 Reference가 뭔지 알아보겠습니다.
값으로 호출하기 (Call by Value)
호출하는 곳에서 인수를 전달할 때 인수의 값이 매개변수로 값이 복사되는 방법
참조로 호출하기 (Call by Reference)
원본 인수가 함수에 전달되는 방식. 전달된 값이 바뀌면 원본 인수가 값이 바뀐다.
이를 이용해서 스왑함수를 만들어보겠습니다.

원본의 값이 바뀌어야 하므로 참조로 호출

코드를 작성하고 실행시키면

스왑이 잘 됩니다.
값복사와 참조복사는 각각의 장단점이 존재합니다.
| \ | Call by Value | Call by Reference |
| 장점 | 값을 복사해서 주기 때문에 원본값이 오염될 걱정이 없다. | 참조를 주기 때문에 복사 비용이 없고 원본값 수정이 된다 |
| 단점 | 값을 복사해서 주기 때문에 복사 비용이 든다. | 원본값 수정이 되기 때문에 의도치않은 값 오염이 발생할 수 있다 |
오늘은 Call by Value와 Call by Reference에 대해 알아보았습니다.
