C++ 指向函数声明语法的指针

C++ pointer to function declaration syntax

foo 的参数中,这两个声明有什么区别?第二个语法对我来说很熟悉,它声明了一个指向函数的指针。两个声明是否完全等价?

void foo(int(int));
void foo(int(*)(int));

只要在函数参数列表中使用int(int)int(*)(int),它们是等价的。在函数参数列表中,int(int) 被语言自动 调整 int(*)(int)

adjustment mechanism 使 int [] 参数声明等同于 int * 参数声明。

在此特定上下文之外 int(int)int(*)(int) 表示两个不同的意思。