这个C语句是什么意思?
我遇到过这一行:
void (*(*x)(void (*[10])(int *)))(int *)
谁能告诉我它是什么?
要想彻底解决这个问题,请从最里面的括号开始,然后逐步解决问题。
-
(*[10])
<---- 10个指针的数组 -
(*[10])(int *)
<------指向函数的10个指针数组,其指针以int
作为参数 -
(void (*[10])(int *))
<------指向函数的10个指针的数组,其指针以int
作为参数并返回void
-
(*x)(void (*[10])(int *))
<-------x
是一个指向函数的指针,该函数有一个参数(一个10个指针的数组,指向函数的指针int作为参数并返回void
)
…..
我中途停了下来,但希望这会有所帮助。
cdecl对这种事情很有帮助。 它说:
声明x作为函数的指针(指向函数的指针的数组10(指向int的指针)返回void)返回指向函数的指针(指向int的指针)返回void
你可以在这里找到解释:
- 如何阅读复杂的C声明 – 不计算
- 读C类声明
- C声明 – 顺时针/螺旋规则
- C-FAQ问题1.21 – 复杂声明
http://cdecl.ridiculousfish.com/?q=void+%28*%28*x%29%28void+%28*%5B10%5D%29%28int+%29%29%29%28int + %29
指向函数的指针,该函数具有10个指向函数的数组,该函数具有int *参数并返回类型为void作为参数,并返回指向具有int *参数且返回类型为void的函数的指针。
资源