C语言声明是如何形成的
让我们先来看一些c语言的术语以及一些能组合成一个声明的牟.独语法成份。其中一个 非常重要的成份就是声明器(declarator)——它是所有声明的核心。简单地说,声明器就是标 识符以及与它组合在一起的任何指针、函数括号、数组下标等,如表3-1所示。为方便起见, 我们把初始化内容(initializer)也放到里面,并分类表示。
一个声明由表3-2所示的各个部分组成(并非所有的组合形式都是合法的,但这个表描 述了我们进一步讨论所要用到的词汇)。声明确定了变量的基本类型以及初始值(如果有的 话)。
让我们看一下如果你使用这些部件来构造一个声明,情况能够复杂到什么程度。同时要 记住,在合法的声明中存在限制条件。你不可以像下面那样做:
•函数的返回值不能是一个函数,所以像fbo〇〇这样是非法的。
•函数的返回值不能是一个数组,所以像foo()[]这样是非法的。
•数组里面不能有函数,所以像foo[]〇这样是非法的。
但像下面这样则是合法的:
•函数的返回值允许是一个函数指针,如:int(*fun())();
•函数的返回值允许是一个指向数组的指针,如:int(*foo〇)[]
•数组里面允许有函数指针,如im(*fo〇m〇
•数组里面允许有其他数组,所以你经常能看到intfc〇[][]