[英]Array of function pointers in 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]
功能:
(*a[10])
不参数:
(*a[10])(void)
返回void *
:
void *(*a[10])(void)
如果你使用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.