typedef
typedef定义的一般形式为:
typedef 原类型名 新类型名
其中原类型名中含有定义部分,新类型名一般用大写表示,以便于区别。
有时也可用宏定义来代替typedef的功能,但是宏定义是由预处理完成的,而typedef则是在编译时完成的,后者更为灵活方便。
1.枚举的定义
enum 枚举名{ 枚举值表 };
在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。
例如:
该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被说明为weekday类型变量的取值只能是七天中的某一天。
C语言不仅提供了丰富的数据类型,而且还允许由用户自己定义类型说明符,也就是说允许由用户为数据类型取“别名”。类型定义符typedef即可用来完成此功能。例如,有整型量a,b,其说明如下:
int a,b;
其中int是整型变量的类型说明符。int的完整写法为integer,为了增加程序的可读性,可把整型说明符用typedef定义为:
typedef int INTEGER
这以后就可用INTEGER来代替int作整型变量的类型说明了。
用typedef定义数组、指针、结构等类型将带来很大的方便,不仅使程序书写简单而且使意义更为明确,因而增强了可读性。
2.枚举变量的说明
如同结构和联合一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定义说明或直接说明。
枚举类型在使用中有以下规定:
1.枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。
2.枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…。
3.只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。
4.如一定要把数值赋予枚举变量,则必须用强制类型转换。
定义结构体类型变量:
结构体类型名 变量名
如果已经声明好了结构体,比如上面的struct jh,那么如果要定义变量a,写作:
struct jh a;
那么变量a的类型为"struct jh",还有两种写法:
(1)在声明类型的同时定义变量.
struct jh{
int a[10];
char b;
float c;
}a;
(2)直接定义结构体类型变量.方法为声明类型的同时定义变量,并且不写结构体名jh,这种方法用于只定义1次变量,而且每用这种方法定义1个变量,虽然都为无名结构体类型,但不属于同一类型.
用结构体变量和指向结构体的指针作函数参数
(1)用结构体变量的成员作参数.例如w.a或w[1].a作参数(注意实参和形参的类型要保持一致).
(2)用结构体变量作实参.不建议使用,略.
(3)用指向结构体变量(或数组)的指针作实参,将结构体变量(或数组)的地址传给形参. |