这些结构是否相同?
int *(*p[10])() //array of ten pointers onto int functions
和
int *(*p())[10]
答案 0 :(得分:12)
没有
以下是非常精彩的cdecl所说的:
int *(*p[10])()
:将p
声明为指向函数的指针的数组10,返回指向int
的指针int *(*p())[10]
:声明p
作为函数返回指向int
指针的数组10的指针。直观地说,它们“不应该”是相同的,因为C ++的声明语法很少含糊不清(至少对我来说是直观的)。
值得指出的是,cdecl也是一个命令行工具,链接到托管其实例的网页更方便。只是想说清楚,这是一个(非常)旧工具,我第一次看到它在Kernighan和Ritchie的"The C Programming Language"书中提到过,我相信我有第二版。