typedef用于给一个数据类型创建一个别名
#include<stdio.h> int?main() { int?a = 1; printf("%d\n", a);//1 typedef?int?zhangsan; zhangsan?b = 12; printf("%d\n", b);//12 return?0; } |
在这个例子中,使用typedef后,int等价于zhangsan
不使用typedef:
#include<stdio.h> struct?Student?{ int?id;//学号 char?name[100];//姓名 char?sex; }; int?main() { struct?Student?st; st.id = 1; printf("%d\n", st.id);//1 struct?Student* pst = &st; //…… return?0; } |
使用typedef:
#include<stdio.h> typedef?struct?Student?{ int?id;//学号 char?name[100];//姓名 char?sex; }SST; int?main() { SST?st; st.id = 1; printf("%d\n", st.id);//1 SST* pst = &st; //…… return?0; } |
使用后,定义的结构体类型的名字struct?Student可以用SST代替,二者等价
typedef?struct?Student?{ int?id;//学号 char?name[100];//姓名 char?sex; }*PSST; |
当typedef在结构体中这样使用的时候,PSST表示typedef?struct?Student*类型的变量,而不是typedef?struct?Student类型的。所以PSST类型的变量存放的是typedef?struct?Student类型的变量的地址。
typedef?struct?Student?{ int?id;//学号 char?name[100];//姓名 char?sex; }*PSST,SST; |
typedef可以像这样一块定义2个别名,这两个别名分别代表不同的含义。
typedef还可以用于其他的,比如指针类型中,等等。用法都差不多。