【发布时间】:2013-01-20 16:21:51
【问题描述】:
可能重复:
How to understand complicated function declarations?
Spiral rule and ‘declaration follows usage’ for parsing C expressions
您可能已经阅读过K&R's The C Programming Language 书中的同名部分“复杂声明”。我只是在读这本书,并试图用 C 语言提高自己。在阅读了提到的部分之后,我想我无法理解 C 声明语句语法背后的逻辑。 1、2、3 和 4 来自第 5 节,第 6 节来自其他页面。
int (*daytab)[13]daytab:指向 int 数组 [13] 的指针void (*comp)()comp: 指向返回 void 的函数的指针char (*(*x())[])()x: 函数返回指针数组[] of pointer to function return charchar (*(*x[3])())[5]x: 指向函数的指针的数组 [3] 返回指向数组 [5] 的指针 字符typedef int (*PFI)(char *, char *)创建类型 PFI,用于 ``指向函数的指针(两个字符 * 参数)返回 int。语法在这里如何工作?
最后,我的问题是:
- 你能解释一下你复杂的思维方式和阅读方式吗 是否可以使用上面的示例进行声明?
- 像这样的东西吗? 1,3,4 实际可用和需要?如果可以,可以写一些代码示例吗?
【问题讨论】:
-
你确定 int (*daytab)[13] 声明了指向 int 的指针的 daytab array[13]?
-
@PascalCuoq 它没有,它是一个指向 13 个整数数组的指针。
-
@SethCarnegie 我知道你知道这一点。我在问 OP。
-
@PascalCuoq 你是对的。谢谢。已编辑
标签: c syntax declaration