在C语言中,除系统定义的标准类型和用户自定义的结构体、共用体等类型之外,还可以使用类型说明语句typedef定义新的类型来代替已有的类型。typedef语句的一般形式是:
typedef 已定义的类型 新的类型;
例如:
typedef int INTEGER; /*指定用 INTEGER 代表 int 类型*/ typedef float REAL; /*指定用 REAL 代表 float 类型*/
在具有上述typedef语句的程序中,下列语句就是等价的。
int i, j; /*与 INTEGER i,j;*/ float pi; /*与 REAL pi;*/
当然typedef的最常用的作用就是给结构体变量重命名。
#include<stdio.h> #include<string.h> typedef struct _INFO { int num; char str[256]; }INFO; int main() { struct _INFO A; INFO B; //通过typedef重命名后的名字INFO与struct _INFO完全等价! A.num = 2014; strcpy(A.str,"Welcome to dotcpp.com"); B=A; printf("This year is %d %s\n",A.num,A.str); printf("This year is %d %s\n",B.num,B.str); return 0; }
可以看到typedef可以为关键词改名,使改名之后的INFO类型等价于struct _INFO类型,让我们在定义这种结构类型时更方便、省事。
事实上,许多windows开发中的许多我们未见过的数据类型,看起来很难懂,但绝大部分都是通过typedef定义后的基本数据类型,大家可以通过追溯变量的定义来了解。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程