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 알고리즘