模糊的声明

Aja*_*ani 8 c c++ declaration function

以下两个声明之间有什么区别:

 1. int foo(int); 
 2. int foo(int());
Run Code Online (Sandbox Code Playgroud)

我不确定这两个声明是否相同.有什么(2)不同(1)

Pra*_*rav 13

int foo(int); 是一个函数的声明,它以整数作为参数并返回一个整数

int foo(int());声明一个函数作为参数"指向一个函数的指针返回int并接受{无参数[在C++中]和未指定数量的参数[在C]中"并返回一个整数.

(2)相当于int foo(int (*pf)())int foo(int f())

  • 为了澄清,@ R的含义是`foo`的特定调用只能用某个但未指定的numbre参数调用`pf`.但是`foo`可以接受在`foo`的*不同*调用中接受不同数量的参数的函数.即我认为这是有效的:`void f(void a(),int i){if(i == 0)a(); 否则a(1); } void g(){} void h(int i){} int main(){f(g,0); f(h,1); }`但这是未定义的行为:`void j(int a()){a(); 一(1); }`就是这样:`void j(int x,...){} int main(){f(j,1); }` (5认同)
  • @RI相信只有C,而不是C++ (2认同)