这个C语句是什么意思?

我遇到过这一行:

void (*(*x)(void (*[10])(int *)))(int *) 

谁能告诉我它是什么?

要想彻底解决这个问题,请从最里面的括号开始,然后逐步解决问题。

  1. (*[10]) <---- 10个指针的数组
  2. (*[10])(int *) <------指向函数的10个指针数组,其指针以int作为参数
  3. (void (*[10])(int *)) <------指向函数的10个指针的数组,其指针以int作为参数并返回void
  4. (*x)(void (*[10])(int *)) <------- x是一个指向函数的指针,该函数有一个参数(一个10个指针的数组,指向函数的指针int作为参数并返回void

…..

我中途停了下来,但希望这会有所帮助。

cdecl对这种事情很有帮助。 它说:

声明x作为函数的指针(指向函数的指针的数组10(指向int的指针)返回void)返回指向函数的指针(指向int的指针)返回void

你可以在这里找到解释:

  • 如何阅读复杂的C声明 – 不计算
  • 读C类声明
  • C声明 – 顺时针/螺旋规则
  • C-FAQ问题1.21 – 复杂声明

指向函数的指针,该函数具有10个指向函数的数组,该函数具有int *参数并返回类型为void作为参数,并返回指向具有int *参数且返回类型为void的函数的指针。

资源