- 一、typedef关键字介绍
- 二、配合结构体使用
- 三、typedef和结构体案例
t y p e d e f typedef typedef 关键字是用来给其他变量类型改名的关键字,C语言允许用户使用 t y p e d e f typedef typedef 关键字来定义自己习惯的数据类型名称,来替代系统默认的基本类型名称、数组类型名称、指针类型名称与用户自定义的结构型名称、共用型名称、枚举型名称等。一旦用户在程序中定义了自己的数据类型名称,就可以在该程序中用自己的数据类型名称来定义变量的类型、数组的类型、指针变量的类型与函数的类型等。定义如下:
typedef unsigned int u8; typedef unsigned int u1; typedef int arr[10];
案例:
#includetypedef unsigned int u8; typedef unsigned int u16; typedef int arr[10]; int main() { u8 a = 100; u16 b = 200; arr c; c[0] = 10; printf("a = %dn",a); printf("b = %dn",b); printf("c[0] = %dn",c[0]); return 0; }
运行结果:
给结构体变量起名字,取代了结构体变量定义繁杂的过程:
#includestruct Test { int idata; char cdata; double ddata; }; typedef struct Test T1; int main() { T1 t1; t1.idata = 100; printf("idata = %dn",t1.idata); return 0; }
运行结果:
还有一种常见写法:
#includetypedef struct { int idata; char cdata; double ddata; }T1; int main() { T1 t1; t1.idata = 100; printf("idata = %dn",t1.idata); return 0; }
#includetypedef struct { int num; char name[32]; char sex; }Person,*pPerson; void printInfo(Person p) { printf("%d号姐姐:%s,%cn",p.num,p.name,p.sex); } void printInfo1(pPerson pp) { printf("%d号姐姐:%s,%cn",pp->num,pp->name,pp->sex); } void printInfo2(Person *pp) { printf("%d号姐姐:%s,%cn",pp->num,pp->name,pp->sex); } int main() { Person p1 = {1,"莉莉",'g'}; Person p2 = {2,"美美",'g'}; pPerson pp1 = &p1; pPerson pp2 = &p2; printInfo(p1); printInfo(p2); printInfo1(pp1); printInfo1(pp2); Person *pp3 = &p1; Person *pp4 = &p2; printInfo2(pp3); printInfo2(pp4); return 0; }
运行结果:



