可能重复:
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
void (*comp)()
comp:返回void的函数指针
char (*(*x())[])()
x:函数返回指向函数返回char的指针array []的指针
char (*(*x[3])())[5]
x:指向函数的指针的数组[3]返回指向数组[5]的指针
炭
typedef int (*PFI)(char *, char *)
创建PFI类型,用于指向函数的指针(两个char *)
参数)返回int。语法如何在这里工作?
最后,我的问题是:
答案 0 :(得分:5)
过去一周左右,我在HackerNews上看到了The ``Clockwise/Spiral Rule''。这是考虑C声明的好方法,尤其是函数指针。
答案 1 :(得分:2)
查看右侧标识符及其旁边的符号:
[
,则标识符用于数组。(
,则标识符用于函数)
,您会发现*
:标识符是指针精化:
int (*daytab)[13]
daytab
是一个指针
void (*comp)()
comp
是一个指针
char (*(*x())[])()
x
是一个功能
char (*(*x[3])())[5]
x
是一个数组
typedef int (*PFI)(char *, char *)
PFI
是一个指针