在C语言中,typedef可以将已有的类型重新定义一个名字,以后就可以使用这个新的名字代替原来的类型。因此,typedef本质上并不是一种新型的数据类型,而是一种用于创建类型别名的关键字。
通常我们使用typedef定义的类型都是一些复杂的结构体或指针类型,并且这些类型的名字很长,不便于使用。在这种情况下,typedef可以给它们提供一个简短而易于使用的替代名称。
在C语言中,函数指针是一个非常重要的概念,可以在程序中实现回调函数等高级功能。但是,定义函数指针类型的语法比较麻烦,在使用的时候也比较繁琐。这时候,typedef就发挥了作用,可以用一种简单的方式定义函数指针类型。
typedef int (*func_ptr) (int);
这个语句定义了一个类型名为func_ptr的变量,它是一个函数指针类型,指向的函数返回一个整型值,接收一个整型参数。以后在程序中只需要使用func_ptr作为函数指针类型的名称,就可以直接定义相关的变量,而无需再写复杂的声明语句。
在C语言中,枚举类型是一种用于取代数字常量的数据类型。使用枚举类型可以提高程序的可读性,降低出错的概率。使用typedef可以更方便地定义枚举类型。
typedef enum{ RED, GREEN, BLUE } Color;
这一个语句将枚举类型定义为Color,RED、GREEN、BLUE就是枚举常量。这种方式可以避免在使用枚举类型时每次都写上enum关键字和类型名称。
在C语言中,联合类型是一种特殊的结构体,它各个成员占用同一块内存。这种类型常常用于处理共用体(union)等高级功能。使用typedef可以更方便地定义联合类型。
typedef union{ int x; double y; } Number;
这个语句定义了一个联合类型Number,它有两个成员,分别是一个整数x和一个双精度浮点数y。由于联合类型的特殊性质,同时只能使用其中的一种类型成员。使用typedef定义联合类型可以减少代码的冗余度。