Are these constructions equivalent?
int *(*p[10])() //array of ten pointers onto int functions
and
int *(*p())[1开发者_运维技巧0]
No.
Here's what the ever-wonderful cdecl says:
int *(*p[10])(): declarepas array 10 of pointer to function returning pointer tointint *(*p())[10]: declarepas function returning pointer to array 10 of pointer toint.
Intuitively, they "shouldn't" be the same since the declaration syntax of C++ is rarely that ambiguous (at least that's intuitive to me).
It might be worth pointing out that cdecl is also a command-line tool, it's just more convenient to link to the web page hosting an instance of it. Just wanted to make this clear, it's a (very) old tool, I first saw it mentioned in the "The C Programming Language" book by Kernighan and Ritchie, I believe I have the 2nd edition.
加载中,请稍侯......
精彩评论