2014-02-20 5 views

답변

8

그것은 당신이 함수의 매개 변수 목록에서 double * 매개 변수를 선언하는 것과 같은 방법입니다

void something (double w, double x, double *py, double *pz) { 
} 

이 :

void (* ptr) (double, double, double *, double *); 

이 같은 기능에 할당 할 수 있습니다 아무리 복잡해도 일반적인 경우에는 사실입니다. 예를 들어, 함수 포인터가 int 다른 함수 포인터 소요 (a doublevoid *을 취하는 함수를 가리키는 및 char*를 반환) 파라미터로서 : 다음

void (* ptr) (int, char * (*) (double, void *)); 

:

char * g (double w, void *) { 
    ... 
} 

void f (int x, char * (* y) (double, void *)) { 
    ... 
} 

// usage, elsewhere: 
ptr = &f; 
ptr(0, &g); 
+0

그런데 때로는 'typedef'유형을 구문 적으로 더 단순하게하는 것이 도움이된다는 것을 알게되는 경우가 있습니다. 예를 들어,'typedef double * double_ptr'은'void (* ptr) (double, double, double_ptr, double_ptr)'을 clear 한 다음에 double *을 대체합니다. 'back in은 올바른 구문을 보여줍니다. –