【C语言】typedef简介

typedef与#define区别

typedef工具是一个高级数据特性,利用typedef可以为某一类型自定义名称。typedef与#define有点类似,但是两者也有三处不同。

  • typedef创建的符号名只受限于类型,不能用于值
  • typedef由编译器解释,不是预处理器(我们平时经常说的编译预处理,其实包含了两步:
功能生成文件
预处理, 展开头文件/宏替换/去掉注释/条件编译(test.i main .i)
编译, 检查语法,生成汇编( test.s main .s)
  • 在其受限范围内,typedef比#define更灵活,可移植性更高

typedef的工作原理

假设要用BITE表示一个字节的数组,只需像定义个char类型变量一样定义BYTE,然后在前面加上typedef关键字即可:

	typedef unsigned char BYTE;
//随后便可用BYTE来定义变量:
	BYTE x,y[10],*z;

为现有的类型创建一个名称简直多此一举,但是它有时确实非常有用。在前面的示例中,用BYTE代替unsigned char表明你打算用BYTE的变量表示数字字符,而不是字符码。

typedef与结构体

typedef还经常应用于结构体类型的命名

//用typedef来命名一个结构类型时,可以省略该结构的标签
typedef struct {
	double x;
	double y;
}rect;
rect r1 = {3.0,5.0};
rect r2 =;
//假设用如上方式使用typedef定义类型名,以上代码将被翻译成:
struct{
	double x;
	double y;
}s1 = {3.0,5.0};
struct{
	double x;
	double y;
}s2;

用typedef来命名结构体是不是显得更加简便,使用的时候可以直接用定义的类型名称定义变量。(nb的一批)
注意点:typedef并没有创建任何新的类型,它只是为某个已存在的类型增加了一个方便使用的标签。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阳的糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值