article thumbnail image
Published 2020. 5. 19. 14:05

인자를 전달하는 방식에는 두가지가 있다.

바로 Call by value 와 Call by reference 이다.

 

Call by value

기본적으로 C언어에서 지원하는 방식이다. 

함수에서 값을 복사해서 전달하는 방식으로, 인자로 전달되는 변수를 함수의 매개변수에 복사한다.

이렇게 복사되면 인자로 전달한 변수와는 별개의 변수가 되며, 매개변수를 변경해도 원래 변수에는 영향을 미치지 않는다. 

따라서 원본 값을 바꿀 필요가 없는 경우에는 call by value 방식을 이용하면 된다.

Call by value 방식은 swap을 진행해도 매개변수가 바뀌지 않는다.

 

Call by reference

함수에서 값을 전달하는 대신 주소값을 전달하는 방식을 Call by reference라고 한다.

코드를 실행해보면 그냥 변수를 넘겨줄 때와는 다르게 원래 변수의 값도 바뀌게 된다. 이렇게 포인터를 이용해서 call by reference를 구현한 것이다.

 

요약하자면 C에서 함수 인자 전달은 원칙적으로는 call by value 이지만, 포인터를 사용하여 call by reference를 구현할 수 있다.

'📌 C' 카테고리의 다른 글

C - 포인터  (0) 2020.05.19
C - if 문의 동작 방식  (0) 2020.05.03
복사했습니다!