c语言 类型定义语句typedef


一、typedef语句定义新类型名

在c语言编写中,我们可以 typedef来定义一种新的类型名来代替已有的基本数据类型名和已定义的数据结构(结构体 联合体 指针 枚举类型)。
typedef只是对已经存在的类型增加了一种类型名的说明,并没有创建一种新的类型;
typedef 用法如下:

typedef 原类型名 新类型名;

typedef:新类型名定义的关键字
原类型名:原系统类型名(int char long int char … 或 系统定义的结构体 联合体 指针 枚举类型)
新类型名: 新名称描述
例:
typedef int t;
typedef unsigned char BYTE; //代表一个字节
typedef unsigned short WORD;
typedef unsigned long DWORD; //常见于window下引用各种dll中所出现的数据类型
typedef unsigned int size_t;// stdio.h中将长整型修改为size_t类型,方便后续的书写和阅读
//如上所示,如果我们在文件开始定义了这些类型说明,那么在以后文件中需要定义的地方,采用新类型名定义变量和原类型名定义是具有同等效果。

int a;
t a;
//此时int a和t a是具有同等的效果。


二、新类型名应用

采用typedef的优点就是可以将类型名和变量名分离,方便程序的移值。
例:
typedef int LONG;
LONG a1,a2,a3;
//现在需要将int类型变为long int类型,我们只需要修改 typedef long int LONG;就可以将程序中所有的int类型的定义修改为long int。

采用typedef进行别名定义,便于程序的移植扩展,简化程序的编写。


三、typedef #define 区别

typedef int LONG;
#define LONG i;
#defint NUM 20;

LONG a; //类似于int a
char *LONG =”information”; //类似于 char *i =”information”;
char c[NUM];//类似于 char c[20]
//typedef 编译时会替换类型名
//define 预处理时会替换变量中的内容

define 和typedef的共同点:都可以简化程序的编写,为程序后期移植和扩展起作用。