这个C语句是什么意思?

时间:2011-11-23 21:44:22

标签: c pointers

我遇到了这句话:

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

有谁可以告诉我它是什么?

5 个答案:

答案 0 :(得分:42)

要自己解决这个问题,请从最里面的括号开始,逐步解决问题。

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

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

答案 1 :(得分:10)

cdecl对这类事情非常有帮助。它说:

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

答案 2 :(得分:5)

答案 3 :(得分:3)

答案 4 :(得分:3)

  

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

Source