C语言typedef用法总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言typedef用法总结

黄海涛,2012-3-11

C语言中的typedef可以让人感觉很清新,但也可以让人感觉神秘。当你一层层剥开它的时候,神秘的面纱终会摘下……

让我们一起来探究其中的秘密吧!

一、概述

1、类型定义符typedef

C语言提供了一个称为typedef的工具,它允许你为各种数据类型定义新的名字。

定义形式:

typedef 原类型名新类型名;

它的格式与变量声明完全一样,只是把typedef这个关键字放在声明的前面,但typedef并不创建变量,而是为指定类型引入一个新的名字。

2、实质

其实质是:为现有类型取个新名字,它并没有引入新的类型。

typedef是一种声明形式,它为一种类型引入新的名字,而不是产生新的类型,也不会为变量分配空间。

3、作用时机

在某些方面,typedef类似于宏文本替换,但typedef是类型定义符,在编译时会有相应类型的检查。typedef是由编译器解释的。

▲typedef与#define的区别

A.#define后面没有分号,而typedef后面有分号;

B.#define不是关键字,而typedef是关键字;

C.宏定义中宏名紧跟着#define,而typedef中的类型名并不紧接其后;

D.可以用其他类型说明符对宏名进行扩展,但对typedef定义的类型名却不行;例如:

E.在连续几个变量声明中,typedef定义的类型名可以保证声明中所有的变量均为同一种类型,而#define定义的宏名则无法保证。

4、使用原因

1)表达方式更简洁,简化编程;

2)使程序参数化,提高程序的可移植性;

3)为程序提供更好的说明性,可以引入一个易记且意义明确的新名字,提升可维护性。

5、缺点

允许一些看上去混乱的语法,可以把几个声明放在一个声明中。如:

二、使用typedef声明定义时的限制

1、

2、

3、

存储类关键字:auto、extern、register、static与typedef

但在存储类说明符中,typedef是个例外,它不会真正影响对象的存储特性。其他存储类说明符确定所声明对象的生存期。

三、typedef基本数据类型

typedef的一个重要用途就是声明定义机器无关的类型名,提高程序的可移植性。

像操作硬件设备等使用长度明确的数据,对应的类型长度也应该明确。在32位机器上

如果要将程序移植到另一个平台,程序中使用的是typedef的新类型名,那么移植时修改typedef中相应信息即可。

四、typedef构造类型

C语言中的构造类型主要包括:数组类型、结构体类型与共用体类型。

1

2

结构体中的问题:

C语言允许在结构体中包含指向它自己的指针,在建立链表等数据结构时可以看到大量这样的例子。解决办法有多种:

五、typedef指针类型

1、

解决办法:在typedef时指明const类型限定符

2、

3、

4、

有人可能会问,会有程序员写这样的代码吗?它有什么用呢?典型的例子是signal()原型的声明,signal()是一个系统调用,用于通知运行时系统,当某种特定的“软件中断”发生时调用特定的程序。你可以通过参数传递告诉它中断的类型以及用于处理中断

由于水平有限,文中肯定存在很多不足之处,恳请阅读者批评指正,相互交流,学习提高。

六、参考资料

1、《C程序设计》(第三版):谭浩强著,清华大学出版社2005.07

2、《C程序设计语言(The C Programming Language)》(第2版中英文版):(美)Brian

W.Kernighan,Dennis M.Ritchie著,徐宝文李志译,机械工业出版社2004 年1月

3、《C专家编程(Expert C Programming)》(中英文版):(美)林登(LinDen,P.V.D)著,

徐波译,人民邮电出版社2002.12

4、《C陷阱与缺陷(C Traps And Pitfalls)》(中英文版):(美)Andrew Koenig著,高巍译,

人民邮电出版社2003

5、《C语言深度解剖》陈正冲著,北京航空航天大学出版社2010

6、《C语言参考手册(C:A Reference Manual)》(第五版):(美)Samuel P.Harbison III,Guy

L.Steele Jr.著,邱仲潘等译,机械工业出版社2003 年8月

7、《想成为嵌入式程序员应知道的0x10个基本问题.doc》作者:Jones Nigel

相关文档
最新文档