2010-10-04 129 views
8

是什么以下两个声明的区别:暧昧声明

1. int foo(int); 
2. int foo(int()); 

我不知道如果这两个声明是等价的。 (2)(1)有什么不同?

+2

退房的http://cdecl.org ......这将有利于... – liaK 2010-10-04 14:18:52

回答

13

int foo(int);是一个函数取的整数作为参数并返回一个整数,以及申报

int foo(int());声明的函数取作为参数“的指针,一个函数返回int和服用{没有参数[在C++]和未指定数量的参数[in C]}“并返回一个整数。

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

+1

不带参数?我相信你的意思是采取不明确的但不是可变的论点。 '(void)'是指定“无参数”的方式。 – 2010-10-04 14:19:36

+2

@R我相信只有C,而不是C++ – Tom 2010-10-04 14:20:26

+0

@R:对不起,我错过了。添加到我的帖子中。 – 2010-10-04 14:21:52