Page 310 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 310
실습 8-5는 문자열 리터럴을 가리키는 두 포인터의 값을 서로 교환하는 프로그램입니다.
실습 8-5 •완성 파일 chap08/swap_ptr.c
01 /* 두 포인터 값을 서로 교환하는 함수가 있는 프로그램 */ 실행 결과
02 #include <stdio.h>
포인터 s1은 "ABCD"를 가리킵니다.
03
포인터 s2는 "EFGH"를 가리킵니다.
04 /*--- 두 포인터를 서로 교환하는 함수 ---*/
05 void swap_ptr (char **x, char **y) 포인터 s1과 s2의 값을 서로 교환했습니다.
06 {
07 char *tmp = *x; 포인터 s1은 "EFGH"를 가리킵니다.
포인터 s2는 "ABCD"를 가리킵니다.
08 *x = *y;
09 *y = tmp;
10 }
11
12 int main (void)
13 {
14 char *s1 = "ABCD"; /* s1은 "ABCD"의 첫 글자 'A'를 가리킵니다. */
15 char *s2 = "EFGH"; /* s2는 "EFGH"의 첫 글자 'E'를 가리킵니다. */
16
17 printf("포인터 s1은 \"%s\"를 가리킵니다.\n", s1);
18 printf("포인터 s2는 \"%s\"를 가리킵니다.\n", s2);
19
20 swap_ptr(&s1, &s2);
21
22 puts("\n포인터 s1과 s2의 값을 서로 교환했습니다.\n");
23
24 printf("포인터 s1은 \"%s\"를 가리킵니다.\n", s1);
25 printf("포인터 s2는 \"%s\"를 가리킵니다.\n", s2);
26
27 return 0;
28 }
main 함수에서 2개의 포인터를 선언한 다음 포인터 s1은 "ABCD", 포인터 s2는 "EFGH"를 가
리키며 초기화됩니다. swap_ptr 함수는 2개의 포인터 값을 서로 교환합니다. 이 함수가 전달
받는 매개변수 x, y의 자료형은 포인터(s1, s2)의 주소를 받아야 하기 때문에 char **형으로 정
의합니다(포인터를 가리키는 포인터). 그림 8-4처럼 함수를 호출하면 각각의 포인터가 가리키는
문자열이 바뀝니다.
310 C 알고리즘