c语言中此关键字用来定义自己习惯的数据类型名称,可以替换系统默认的类型名称、结构体、共用体、枚举类型等。
用法
1、为基本数据类型定义类型名
typedef unsigned int COUNT;
使用COUNT替换unsigned int
2、为自定义的数据类型(结构体、公用体、枚举类型)定义简洁的类型名称
struct Point { double x; double y; double z; };
此结构体使用的时候,需用如下方式调用
struct Point oPoint1={100,100,0}; struct Point oPoint2;
可使用typedef关键字定义新的名称
typedef struct tagPoint { double x; double y; double z; } Point;
这个Point就是这个结构体的别名。
3、为数组定义简洁的类型名称
typedef int vector[10];
语句定义了一个元素类型为int,含有10个元素的数组类型vector,若不使用typedef保留字,则就变成了数组定义,它只定义了一个元素类型为int、含有10个元素的数组vector。这两种定义有着本质的区别,若定义的是数组vector,系统将为它分配有保存10个整数的存储单元,共40个字节的存储空间;若定义的是数组类型vector,系统只是把该类型的有关信息登记下来,待以后利用该类型定义对象时使用,具体地说,就是把vector的元素类型int,类型长度10,类型名vectoe等登记下来,待以后定义vector类型的对象时使用。
可以按如下方法使用
vector v1,v2;
这条语句定义了vector类型的两个对象v1和v2,每个对象都是vector类型的一个数组,每个数组由10个整型元素所组成。
4、为指针定义简洁的名称
- typedef char* PCHAR;
- PCHAR pa;
对于上面这种简单的变量声明,使用 typedef 来定义一个新的别名或许会感觉意义不大,但在比较复杂的变量声明中,typedef 的优势马上就体现出来了,如下面的示例代码所示:
// PFun是我们创建的一个类型别名
typedef int *(*PFun)(int,char*);
// 使用定义的新类型来声明对象,等价于int*(*a[5])(int,char*)
PFun a[5];
综上所述:typedef就是用来定义别名的,和define存替换有很大差别,typedef定义的别名在编写代码时就会报错。