|
질문. 님이 쓰신 글 :
: #indef _LINSRCH_H
: #define _LINSRCH_H
:
:
: tydef int (*FCMP)(const void*,const void*);
:
: int lv_search(void *key,void *base,size_t width,FCMP fcmp);
: ...
: ..
: .
:
:
:
: 위의 간단한소스이구요. 이재규씨가 쓴 c 로 배우는 알고리즘의 순차검색편에 나오는
: 헤더 파일의 소스 입니다.
: 소스를 다 쓰기가 뭐해서 앞의 일부만 올렸는데요..
:
: 다른 것은 문제되는 것이 없으나 lv_search 함수의 마지막 매개변수인 FCMP fcmp 에서
:
: FCMP 가 int 형을 리턴하고 void * 형 매개변수 두 개를 취하는 함수의 포인터라는 것은
: 알겠는데.. 그 뒤에 나오는 fcmp 가 무엇을 의미하는지 잘 모르겠습니다.
FCMP는 포인터 타입이고, fcmp가 lv_search로 전달되는 포인터지요.
lv_search에서 두 값의 비교를 수행할 때 마다,
fcmp로 지정된 함수를 호출합니다.
표준 라이브러리의 lsearch, bsearch, qsort등도 항상 이런 식으로 작동합니다.
함수 호출에 사용되는 비용이 크다는게 단점이죠.
: 궁굼증이 가시질 않네요..저것 땜시...
:
: 도움 부탁 드립니다...
|