繁体   English   中英

C中的函数指针数组

[英]Array of function pointers in 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]

    功能:

    (*a[10])

    不参数:

    (*a[10])(void)

    返回void *

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

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

     typedef void *(*func)(void); 

    然后制作你的数组:

     func a[10]; 

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

例如

typedef void *(* funcPtr)(void);

funcPtr array[100];

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

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

从数组名称开始,然后解决问题,在**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

使用typedef

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM