C++ 指向函数赋值的指针

C++ 指向函数赋值的指针,c++,function-pointers,C++,Function Pointers,为什么在下面的代码中编译没有“&”的赋值?我用GCC 3.4.6编译了代码。在没有&的情况下分配是正确的,还是这是GCC的一个“特性” 这完全可以。这两种说法完全相同。函数左值通过标准转换转换为指向函数的指针。§4.3/1: 函数类型T的左值可以转换为“指向T的指针”类型的右值。结果是指向函数的指针 void func() { } int main() { typedef void (*F)(); F f; f = &func; // the way of assigni

为什么在下面的代码中编译没有“&”的赋值?我用GCC 3.4.6编译了代码。在没有&的情况下分配是正确的,还是这是GCC的一个“特性”


这完全可以。这两种说法完全相同。函数左值通过标准转换转换为指向函数的指针。§4.3/1:

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

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;
}