这是什么意思?
int * (*(*d)())[10];
我认为它可能是指向返回int的函数的10个指针数组的指针。我是对的吗?
答案 0 :(得分:4)
cdecl.org告诉我们这是:
声明d作为指向函数的指针,返回指向int
的指针数组10的指针
如果您遇到困难,我建议您下次使用该网站。
顺便说一下,如果这是您正在使用的实际代码中的声明,就会跑掉。
答案 1 :(得分:1)
表示声明,按顺序读取,从右,左,右,左开始。
int *(*(* d)())[10];
d : right of d is empty (coz d enclosed by (), and you cant jump out of ())
: left of d is *, so d is a pointer
: right of (*d) is (), so d is a pointer to function
: left of (*d)() is *, so d is a pointer to function that returns a pointer
: right of (*(*d)()) is [10], so d is a pointer to function that returns a pointer to array of size 10
: left of (*(*d)())[10] is int *,
所以最后,d是一个指向函数的指针,它返回一个指向10个int指针数组的指针
答案 2 :(得分:0)
问题已经回答,但我想添加一个链接
http://ieng9.ucsd.edu/~cs30x/rt_lt.rule.html
非常好地描述了右 - 左规则来破译任何C声明,无论多么复杂。它易于理解和使用。