为什么没有'&'的作业正在编译以下代码?我用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;
}
答案 0 :(得分:13)
这是完全可以的。这两个陈述完全相同。函数lvalue通过标准转换转换为指向函数的指针。 §4.3/ 1:
函数类型T的左值可以转换为“指向T的指针”的右值。结果是指向函数的指针。