首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复杂的声明

复杂的声明
EN

Stack Overflow用户
提问于 2011-08-17 06:33:11
回答 2查看 182关注 0票数 3

我们如何解释下面的声明:

代码语言:javascript
复制
char (*(*f())[])();

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-17 06:34:40

http://www.antlr.org/wiki/display/CS652/How+To+Read+C+Declarations提供了一个很好的教程。

票数 0
EN

Stack Overflow用户

发布于 2011-08-17 06:42:51

确实有一个不太为人所知的把戏。假设f是一个变量名,*()[]是您可以对其执行的操作。使用C运算符的优先规则来理解:

代码语言:javascript
复制
f

可以应用

代码语言:javascript
复制
f()

然后解除引用

代码语言:javascript
复制
*f()

然后下标

代码语言:javascript
复制
(*f())[]

然后解除引用

代码语言:javascript
复制
*(*f())[]

然后应用

代码语言:javascript
复制
(*(*f())[])()

给出一个char

代码语言:javascript
复制
char (*(*f())[])()

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7085893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档