复杂的宣言

时间:2011-08-16 22:33:11

标签: c arrays pointers function-pointers declaration

我们如何解释以下声明:

char (*(*f())[])();

如何开发一种方便的技术来阅读C中那些复杂甚至更复杂的声明。如果你使用快速技巧,请分享。

2 个答案:

答案 0 :(得分:2)

确实有一个不太知名的伎俩。假设f是变量名称,*()[]是您可以对其执行的操作。使用C运算符的优先规则来表示:

f

可以应用

f()

然后解除引用

*f()

然后下标

(*f())[]

然后解除引用

*(*f())[]

然后应用

(*(*f())[])()

给出char

char (*(*f())[])()

所以f是一个函数,返回指向返回char的函数的指针数组的指针。

答案 1 :(得分:0)