一般的声明形式如下:
声明说明符+声明符列表
声明说明符:描述声明的变量或函数的性质。
声明说明符分为三大类:
1.存储类型:auto、static、extern、register。每次声明只能出现一个存储类型,并且放在声明语句的最前面。
2.类型限定符:const、volatile、(:C99restrict)。每次声明可以包含零个或多个限定符。
3.类型说明符:void、char、short、int、long、float、double、signed、unsigned、结构、联合、枚举以及用关键字typedef定义的类型别名都是类型说明符。可以组合使用且没有顺序要求(如unsigned int long与long int unsigned完全一样)。
C99 4.函数说明符:inline(内联函数,与C++中的的inline函数一样)。
类型限定符与类型说明符之间没有顺序要求,但必须都跟随在存储类型后面。出于书写风格的考虑一般我们采用:存储类型+类型限定符+类型说明符。
声明符:给出了它们的名字,并且可以提供关于其性质的额外信息。
声明符包括标识符(简单变量的名字)、后边跟随[]的标识符(数组名)、前面放置*的标识符(指针名)、后面跟谁()的标识符(函数名)。声明符之间用逗号隔开。表示变量的声明符后边可以跟随初始化式(有些情况下,编译器在用户未初始化时自动进行变量初始化)。
复合类型:复合类型是基于其他类型定义的类型。
一条声明语句中声明说明符只有一个但可以跟不同的一组声明符定义出不同类型的变量(如 int i,*p;)