在 foo 的参数方面,这两种声明有什么区别?第二种语法对我来说很熟悉,它声明一个指向函数的指针。这两种声明完全等价吗? void foo(int(int)); void foo(int(*)(int));
只要在函数参数列表中使用int(int)和int(*)(int),它们就是等效的。在函数参数列表中,语言会自动将int(int)“调整”为int(*)(int)。这与使int []参数声明等效于int *参数声明的调整机制相同。在这种特定情况之外,int(int)和int(*)(int)具有不同的含义。