我有这个表达式 int *(*foo())[30]
is foo a function (which receive no arguments) and returns a pointer to an array (size 30) of pointers of integers ?
最佳答案
没有。
您可以按照与正常表达式求值相反的顺序来解码声明。
正常评估顺序:
foo
foo()
*foo()
(*foo())[30]
*(*foo())[30]
所以这个声明是:
*(*foo())[30]
:指针(*foo())[30]
:指针数组*foo()
:指向指针数组的指针foo()
:返回指向指针数组的指针的函数foo
所以这个声明的意思是“一个函数foo
,它返回一个指向int
的指针数组的指针”。
你错误的一点是这里没有指定foo
的参数数量,因此它的参数数量不必为零。
关于复杂的声明表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37635495/