Page 126 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 126

매개변수 선언                                         /*--- kuku 함수 매개변수의 다른 선언 방법 ---*/
                                                                   void kuku(int calc(int, int))
                   함수에 대한 포인터는 매개변수 선언에서만 변수 이름 앞
                                                                   {
                   의 *와 ( )를 생략한 형식으로 선언할 수 있습니다. 배열을                 int i, j;
                   매개변수로 하는 함수에서 int *p를 int p[ ]로 선언하는               for(i = 1; i <= 9; i++) {
                                                                         for(j = 1; j <= 9; j++)
                   경우와 비슷합니다.
                                                                            printf("%3d", calc(i, j));
                                                                         putchar('\n');
                                                                      }
                   함수에 대한 포인터를 통한 함수의 호출                           }
                   일반적으로 함수 호출식의 왼쪽 피연산자는 함수 포인터가
                   아닌 함수 이름을 사용해도 됩니다. 다시 말해 간접 참조 연산자 *의 함수를 이해하기 위해 실습 3C-1
                   에서 (*calc)(i, j)라고 했지만 간단히 calc(i, j)라고 해도 됩니다.







                   구조체 배열에서 검색하기

                   이전까지의 검색 프로그램은 자료형이 기본형(int, double, float, …)인 배열에서만 검사하는 기
                   능이 있었습니다. 지금부터는 자료형이 구조체인 배열에서의 검색을 bsearch 함수로 구현해
                   보겠습니다.


                      실습 3-7                                               •완성 파일 chap03/bsearch3.c

                     01  /* bsearch 함수를 사용한 구조체 배열에서의 검색 */
                                                                            실행 결과
                     02  #include <stdio.h>
                                                                 이름으로 검색합니다.
                     03  #include <stdlib.h>                     이름 : 최윤미
                     04  #include <string.h>                     검색 성공 !! 아래 요소를 찾았습니다.
                     05                                          x[3] : 최윤미 165cm 51kg
                     06  typedef struct {                        다시 검색할까요?(1) 예 / (0) 아니오 : 0
                     07     char name[10];   /* 이름 */
                     08     int height;    /* 키 */
                     09     int weight;    /* 몸무게 */
                     10  } Person;
                     11
                     12  /*--- Person형의 비교 함수(오름차순으로 이름 정렬) ---*/
                     13  int npcmp(const Person *x, const Person *y)
                     14  {
                     15     return strcmp(x->name, y->name);
                     16  }
                     17
                     18  int main(void)




                   126   C 알고리즘
   121   122   123   124   125   126   127   128   129   130   131