Page 149 고등학교 프로그래밍 교과서
P. 149
앞의 프로그램에서 robotMove 함수를 호출하면 변수의 값만 전달되었으므로 원
래 변수의 값은 변하지 않는다. 왜냐하면 robotMove 함수의 매개 변수로 넣은 변수
x, y값은 값이 함수로 전달되는 것이므로, main 함수의 x, y 변수와 robotMove 함
수의 매개 변수는 다른 값이기 때문이다. 이런 함수 호출 방식을 값에 의한 호출(call
by Value)라고 한다. 만약 원래 변수의 값을 바꾸려면 변수의 주소를 참조하여 변수
의 값을 바꾸어야 한다. 이러한 방법을 참조에 의한 호출(Call by Reference)이라고
한다.
예제 변수 2개의 값을 교환하는 함수 swap( )를 작성해 보자.
알고리즘 설계
① 포인터를 매개 변수로 하여 값을 받는다.
② 두 값을 바꾸어 반환한다.
프로그램
01 #include
02 void swap(int *a, int *b);
03 int main(void)
04 {
05 int a, b;
06 a = 5;
07 b = 7;
08 printf("함수 호출 전 : a = %d, b = %d \n", a, b);
09 swap(&a, &b); a와 b의 주소 전달
10 printf("함수 호출 후 : a = %d, b = %d \n", a, b);
11 return 0;
호출 후 a, b 값
12 }
13 void swap (int *a, int *b)
14 {
15 int temp;
값이 제대로 변하기 위해서
16 temp = *a; swap( ) 함수의 매개 변수로
17 *a = *b; 포인터를 사용해야 해.
18 *b = temp;
19 }
실행 결과
함수 호출 전 a=5, b=7
함수 호출 후 a=7, b=5
7. 포인터 147
(책)2015프로그래밍-교과서3차심의본 본문.indb 147 2017-09-05 오후 4:16:32