指向函数赋值的指针

MKo*_*MKo 5 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;
}
Run Code Online (Sandbox Code Playgroud)

Man*_*rse 13

这完全没问题.这两个陈述完全相同.函数lvalue通过标准转换转换为指向函数的指针.§4.3/ 1:

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