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
   144   145   146   147   148   149   150   151   152   153   154