什么'(* b)(int)= fubar;'意思?

时间:2014-11-25 05:24:25

标签: c

static void fubar(int a)
{
  void (*b) (int) = fubar; // <---
  static int c;
}

http://cdecl.org/表示语法错误。

我的猜测是b是指向返回int的函数的指针。这是对的吗?

3 个答案:

答案 0 :(得分:3)

必须有一些返回类型,

void (*b) (int) = fubar;

int (*b) (int) = fubar;

然后它b将是指向函数的指针,该函数返回void / int并将int作为参数。

答案 1 :(得分:2)

必须有一个返回类型

int(* b)(int)= fubar;

所以这解释了b是指向函数的指针,它以INT作为参数,它将返回INT值

答案 2 :(得分:1)

  

我的猜测是b是指向返回int的函数的指针。这是   正确的吗?

您接近正确答案。它确实是一个指向函数的指针,该函数具有返回类型void和一个类型为int的参数。

正如您从代码段中看到的那样

static void fubar(int a)
{
  void (*b) (int) = fubar; // <---
  static int c;
}

在作业的右侧,标识符fubar已经被声明为 void fubar(int a)。在函数内部,只需将它赋值给相同类型的指针即可。