함수 포인터는 어디에...
글쓴이: miso210 / 작성시간: 금, 2004/09/10 - 2:04오후
C를 공부 중 입니다.
책 임인건 님의 터보C 정복 에 나온 소스입니다.
#include <math.h> #define printexpr(expr) printf("%11s == %.14f\n", #expr, expr) void main(void) { double (*fp)(double); fp = log10(2.)); printexpr(log10(2.)); printexpr(log10 (2.)); printexpr((*fp)(2.)); <----- 여기 printexpr(fp(2.)); <----- 여기 printexpr(fp (2.)); }
저는 왜 함수 포인터를 써야 하는지 모르겠습니다.
여기서 #define 을 생략하고 일반 함수를 만들어 사용했을때 그 안에서 수학함수를 불러다 쓰면 된다고 생각하는데 왜 함수 포인터를 만들어 사용하는지요..
대체 함수 포인터를 사용해야 되는 이유가 궁금합니다. 어디에서 함수 포인터가 주로 사용되나요.
Forums:
ANSI C 라이브러리의 예제
qsort()
bsearch()
signal() 함수,callback 함수등등..
signal() 함수,callback 함수등등..
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
위에서 말씀하신 콜백함수 지정해주는 용도도 하나 있고요... 또
위에서 말씀하신 콜백함수 지정해주는 용도도 하나 있고요...
또 다른 중요한 한가지는 C로 C++의 버추얼 함수 같은걸 만든다고 생각해보면 쉽지 않을까요?
예를 들어... 아래와 같이 베이스 클래스 구조체가 있다고 하면요, 이걸 상속 받는 놈들(C니까 자신의 구조체에 포함하는걸 의미)이 모두 각자의 new, copy, delete, dump등의 함수를 구현해서 생성자에서 저 함수 포인터들을 각각 채워 넣는걸 생각해보면 되겠죠. 당연히 모든 클래스들이 저 함수들의 내용이 다를테니 자신이 생성될 때 자신에게 알맞는 함수들을 저 함수 포인터들에 설정해주는거죠. 그러면 부르는 측에서는 해당 객체의 종류 등에 상관 없이 동일한 한가지 이름의 함수만 부르면 되니까 편리하겠죠.
=-=-=-=-=-=-=-=-=
http://youlsa.com
댓글 달기