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 알고리즘
   305   306   307   308   309   310   311   312   313   314   315