Car*_*rum 19
首先,你应该了解cdecl:
cdecl> declare a as array 10 of pointer to function(void) returning pointer to void
void *(*a[10])(void )
Run Code Online (Sandbox Code Playgroud)你可以手工完成 - 只需从内部构建它:
a
是一个数组:
a[10]
指针:
*a[10]
功能:
(*a[10])
不参数:
(*a[10])(void)
回归void *:
void *(*a[10])(void)
如果你typedef用来让你的生活更轻松,那就更好了:
typedef void *(*func)(void);
Run Code Online (Sandbox Code Playgroud)
然后制作你的数组:
func a[10];
Run Code Online (Sandbox Code Playgroud)每当复合语法过于复杂时,typedef通常都会清除.
例如
typedef void *(* funcPtr)(void);
funcPtr array[100];
Run Code Online (Sandbox Code Playgroud)
没有typedef,我猜想会是这样的:
void *(* array[100])(void);
Run Code Online (Sandbox Code Playgroud)
从数组名称开始,然后逐步解决,记住这一点[]并()在之前绑定*(*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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6428 次 |
| 最近记录: |