复杂的声明(C)

wor*_*wer 1 c syntax declaration

可能重复:
如何理解复杂的函数声明?
螺旋规则和'声明跟随用法'用于解析C表达式

在你可能已经读过的K&R的C编程语言书中有一个标题相同的部分,"复杂的声明" .我正在阅读这本书并试图用C语言改进自己.在阅读了上面提到的部分之后,我想我无法理解C声明语句的语法背后的逻辑.1,2,3和4来自该部分5和6来自其他页面.

  1. int (*daytab)[13] daytab:指向int的数组[13]的指针

  2. void (*comp)() comp:函数返回void的指针

  3. char (*(*x())[])() x:函数返回指向函数返回char的指针array []的指针

  4. char (*(*x[3])())[5] x:指向函数的指针的数组[3]返回指向char的数组[5]的指针

  5. typedef int (*PFI)(char *, char *) 创建类型PFI,用于指向返回int的函数(两个char*参数)的指针.语法如何在这里工作?

最后,我的问题是:

  • 您能否通过上述示例解释您的思维方式和阅读复杂的声明?
  • 1,3,4这样的东西是否实际可用且需要?如果是这样,你能写一些代码示例吗?

Kyl*_*ton 6

过去一周左右,在HackerNews上看到了"顺时针/螺旋规则".这是考虑C声明的好方法,尤其是函数指针.