我有这个表达式int *(* foo())[30]
是foo函数(不接收参数)并返回指向整数指针数组(大小为30)的指针?
答案 0 :(得分:1)
没有
您可以按正常评估表达式的相反顺序解码声明。
正常评估顺序:
foo
foo()
*foo()
(*foo())[30]
*(*foo())[30]
所以这个宣言是:
*(*foo())[30]
:指针 (*foo())[30]
: 指针数组*foo()
:指向指针数组的指针foo()
:返回指针数组指针的函数foo
所以这个声明意味着“一个函数foo
,它返回指向int
”指针数组的指针。
你错了的地方是这里没有指定foo
的参数个数,所以它的参数个数不一定是零。