指向函数赋值的指针

时间:2011-08-30 15:36:56

标签: c++ function-pointers

为什么没有'&'的作业正在编译以下代码?我用GCC 3.4.6编译了代码。没有&分配是否正确,或者这是GCC的“特征”?

void func() {
}

int main() {
  typedef void (*F)();

  F f;
  f = &func; // the way of assigning pointer to function.
  f = func;  // this is also working.

  (*f)();

  return 0;
}

1 个答案:

答案 0 :(得分:13)

这是完全可以的。这两个陈述完全相同。函数lvalue通过标准转换转换为指向函数的指针。 §4.3/ 1:

  

函数类型T的左值可以转换为“指向T的指针”的右值。结果是指向函数的指针。