C中的函数指针数组
我很难理解函数指针的语法。 我要做的是,有一个函数指针数组,不带参数,并返回一个void指针。 任何人都可以帮忙吗?
-
首先,您应该了解
cdecl
:cdecl> declare a as array 10 of pointer to function(void) returning pointer to void void *(*a[10])(void )
-
你可以手工完成 – 只需从内部构建它:
a
是一个数组:
a[10]
指针:
*a[10]
function:
(*a[10])
不参数:
(*a[10])(void)
返回
void *
:void *(*a[10])(void)
-
如果你使用
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 ++函数指针数组的示例和解释。