인수 전달 방법
함수를 호출할 때에는 함수에 필요한 데이터를 인수(argument)로 전달해 줄 수 있습니다.
이렇게 함수에 인수를 전달하는 방법에는 크게 다음과 같이 두가지 방법이 있습니다.
1. 값에 의한 전달(Call by value)
2. 참조에 의한 전달(Call by reference)
값에 의한 전달(Call by value)
값에 의한 전달 방법은 인수로 전달되는 변수가 가지고 있는 값을 함수 내의 매개 변수에 복사하는 방식입니다.
복사된 값으로 초기화 된 매개변수는 인수로 전달된 변수와는 완전히 별개의 변수가 되며, 따라서 함수 내에서 매개변수 조작은 인수로 전달되는 변수에 아무런 영향을 끼치지 않습니다.
실행 결과
변수 var의 초기값 : 10
local() 함수 호출 후 var의 값 : 10
위의 예제에서 local() 함수의 매개변수 num는 인수로 변수 var의 값을 전달받았으나 매개변수 num을 변경하더라도 전달된 var의 값은 절대 변경되지 않습니다.
참조에 의한 전달(Call by reference)
참조에 의한 전달 방법은 인수로 변수의 값을 전달하는 것이 아닌, 해당 변수에 주소값을 전달한다.
즉, 함수의 매개변수에 인수로 전달 된 변수의 원래 주소 값을 저장하는 방식으로, 이 방식을 사용하면 인수로 전달된 변수의 값을 함수 내에서 변경할 수 있게 된다.
실행 결과
변수 var의 초기값 : 10
local() 함수 호출 후 변수 var 값 : 20
위의 예제에서는 local() 함수의 매개변수 num는 인수로 var의 주소값을 전달받아서, local 함수에서 매개변수 num의 값을 변경하더라도, 원래 인수인 변수 var의 값도 같이 변경이 됩니다.
'study > C언어' 카테고리의 다른 글
구조체 정리 (0) | 2020.04.02 |
---|---|
[c언어] 입출력 정리 (0) | 2020.04.02 |
배열(Array) 과 포인터(Pointer) (0) | 2020.03.31 |
함수(Function) 란? (0) | 2020.03.31 |
스택 프레임(Stack frame) (0) | 2020.03.31 |