【发布时间】:2011-03-29 21:53:45
【问题描述】:
这些结构是等价的吗?
int *(*p[10])() //array of ten pointers onto int functions
和
int *(*p())[10]
【问题讨论】:
标签: c++
这些结构是等价的吗?
int *(*p[10])() //array of ten pointers onto int functions
和
int *(*p())[10]
【问题讨论】:
标签: c++
没有。
这就是永远精彩的cdecl 所说的:
int *(*p[10])():将p声明为指向函数的数组10,该函数返回指向int的指针
int *(*p())[10]:将p声明为函数,返回指向int的指针数组10的指针。直观地说,它们“不应该”是相同的,因为 C++ 的声明语法很少那么模棱两可(至少这对我来说是直观的)。
可能值得指出的是,cdecl 也是一个命令行工具,它只是更方便地链接到托管它的实例的网页。只是想澄清一下,这是一个(非常)旧的工具,我第一次看到它是在 Kernighan 和 Ritchie 的 "The C Programming Language" 书中提到的,我相信我有第二版。
【讨论】: