-
[C Language] 23. 함수 - 값에 의한 호출(Call By Value) - C 언어CSE/C Language 2015. 6. 13. 10:21
값에 의한 호출을 이야기할 때 빠져서는 안 되는 개념이 있다. 바로 매개변수이다. 매개변수는 형식 매개변수와 실 매개변수로 나뉘는데, 호출하는 쪽의 인자를 실 매개변수라 하고, 호출 당하는 쪽의 인자를 형식 매개변수라 한다.
아래 예제를 통해 살펴보자. 숫자를 입력하면 입력한 숫자 값까지 1부터 더하는 예제이다.
아래 예제에서 total = sum(num)에서 num은 실 매개변수이다. 이 값이 아래의 sum(int x) 함수의 x에 복사되어 전달된다.
12345678910111213141516171819202122232425262728293031323334353637/** sumuntil.c** Created on: 2015. 5. 17.* Author: root*/#include <stdio.h>int sum(int);int main(void) {int num;int total = 0;puts("Input number");scanf("%d", &num);total = sum(num);printf("Total %d", total);return 0;}int sum(int x) {int i;int sum = 0;for (i = 1; i <= x; i++)sum += i;return sum;}cs 다음은 가장 유명한 예제인 swap 예제를 통해 살펴보도록 하자.
12345678910111213141516171819202122232425262728293031323334353637/** swap.c** Created on: 2015. 5. 17.* Author: root*/#include <stdio.h>void swap(int, int);int main(void) {int x = 7, y = 5;puts("Inside main() function");printf("1. x = %d, y = %d\n", x, y);swap(x, y);puts("Inside main() function");printf("2. x = %d, y = %d", x, y);return 0;}void swap(int x, int y) {int tmp;tmp = x;x = y;y = tmp;puts("Inside Swap() function ");printf("3. x = %d, y = %d\n", x, y);}cs 출력 결과를 살펴보면, swap() 함수 내부에서는 x와 y의 값이 바뀌어서 출력이 되었다.
그러나, 다시 main 함수에서 출력된 결과를 보면 맨 처음 x와 y의 값이다.
이 결과를 통해, 함수 swap()에 전달되는 값은 원본 값이 아닌 복사된 값을 통한 작업이 이루어졌다는 게 확실히 증명된다.
* Programming in C 서적을 참고하여 작성하였습니다
'CSE > C Language' 카테고리의 다른 글
[C Language] 26. 함수 - 재귀함수(Recursive) - C 언어 (0) 2015.06.13 [C Language] 25. 함수 - 리턴 값 여러 개 받기 - C 언어 (0) 2015.06.13 [C Language] 24. 함수 - 참조에 의한 호출(Call By Reference) - C 언어 (0) 2015.06.13 [C Language] 22. 함수(function)의 기본 - C 언어 (0) 2015.06.13 [C Language] 21. 함수(function)란? - C 언어 (0) 2015.06.13 [C Language] 20. continue, break - C 언어 (0) 2015.06.13