你的意思是跟随线?
void(*fnctn)(void(*)(int *,void **),int(*)(void**,int*));
答案 0 :(得分:12)
你实际上有一个函数指针'fnctn',它为它的两个参数提供了两个函数指针。如果我们一点一点地打破这一点,你有以下几点:
第一个参数void(*)(int*, void**)
是一个返回void的函数指针,取一个int *和void **,因为它是两个参数。
第二个参数int(*)(void**, int*)
是一个返回int值并将void **和int *作为其两个参数的函数指针。
可能更清楚地看到如下:
typedef void(*param1)(int *, void**);
typedef int(*param2)(void**, int*);
typedef void(*fnctn)(param1, param2);
答案 1 :(得分:4)
$ cdecl
Type `help' or `?' for help
cdecl> explain void(*fnctn)(void(*)(int *,void **),int(*)(void**,int*));
declare fnctn as pointer to function (pointer to function (pointer to int, pointer to pointer to void) returning void, pointer to function (pointer to pointer to void, pointer to int) returning int) returning void
cdecl>
答案 2 :(得分:2)
声明一个指向函数的指针,该函数返回带有标识符“fnctn”的void,该函数将一个返回void的函数作为参数,并将一个int *和一个void **作为参数以及一个返回int的函数void **和int *作为参数。
进一步阅读:Function pointer syntax
答案 3 :(得分:1)
尝试学习顺时针螺旋规则:http://c-faq.com/decl/spiral.anderson.html通过这个,您可以了解任何函数声明的含义,从而使您能够确定它的作用。
答案 4 :(得分:1)
在我看来,就像声明一个函数指向函数一样,该函数指向一个函数指针,该函数指针将int*, void**
作为参数并返回void
作为第一个参数,并返回一个函数指针。将void**, int*
作为参数并返回int
作为第二个参数的函数。此函数的返回类型为void
。
清除泥浆。