C中的函数指针数组

我很难理解函数指针的语法。 我要做的是,有一个函数指针数组,不带参数,并返回一个void指针。 任何人都可以帮忙吗?

  1. 首先,您应该了解cdecl

     cdecl> declare a as array 10 of pointer to function(void) returning pointer to void void *(*a[10])(void ) 
  2. 你可以手工完成 – 只需从内部构建它:

    a

    是一个数组:

    a[10]

    指针:

    *a[10]

    function:

    (*a[10])

    不参数:

    (*a[10])(void)

    返回void *

    void *(*a[10])(void)

  3. 如果你使用typedef让你的生活更轻松,那就更好了:

     typedef void *(*func)(void); 

    然后制作你的arrays:

     func a[10]; 

每当复合语法过于复杂时,typedef通常都会清除。

例如

 typedef void *(* funcPtr)(void); funcPtr array[100]; 

没有typedef,我猜想会是这样的:

 void *(* array[100])(void); 

使用typedef

 typedef void* func(void); func *arr[37]; 

从数组名称开始,然后解决问题,在**a[]是指针数组之前记住[]()绑定, (*a)[]是指向数组的指针, *f()是返回指针的函数, (*f)()是指向函数的指针):

  farr -- farr farr[N] -- is an N-element array *farr[N] -- of pointers (*farr[N])( ) -- to functions (*farr[N])(void) -- taking no arguments *(*farr[N])(void) -- and returning pointers void *(*farr[N])(void); -- to void 

查看http://www.newty.de/fpt/fpt.html#arrays ,了解C和C ++函数指针数组的示例和解释。