现在的位置: 首页 > 综合 > 正文

Typedef 的应用小结

2018年08月26日 ⁄ 综合 ⁄ 共 1079字 ⁄ 字号 评论关闭

在不同的平台结构上,由于硬件的差异性,即便是相同的数据类型定义(如int )可能所占用的字节数也是不同的。这对应用程序的可移植性提出了巨大的挑战。

Typedef 正是用于解决这种差异性的一种很好的方法。它有助于创建与平台无关的类型,甚至能够隐藏复杂和难以理解的语法。也就是说,使用typedef能为代码的可移植性带来好处。提高代码的健壮性。

Typedef是怎样实现平台的无关性呢?同一种类型在一种平台上是一种模样,移植到另外一种平台上可能就会换做另外一种类型,那怎样解决呢?要一个个改变吗?

当然不!Typedef能够为现有的类型(即函数库里)创建同义字。一种程度上也定义了易于记忆的类型名,从而更好的实现作者的意图。本文主要介绍C语音中typedef的用法。编程中使用typedef的目的一般有两个:一是给变量起一个容易记忆的新名字。另一个是简化一些比较复杂的类型声明。如下所示:

一 typedef 最简单的使用

typedef int size;  //此声明定义了一个int的同义字,即size。

注:typedef 并不能创建新的数据类型,它的作用仅仅为现有类型添加一个同义字。经过上面声明,你可以在所有用到int的地方用size来代替。语句定义的结尾有.

二 typedef 与结构体结合使用

Typedef struct tagmyStruct

{

int iNum;

long iLength;

}MyStruct;

此语句实际完成两个操作:

1、定义一个新的结构类型

等同于:

Struct tagmyStruct

{

int iNum;

long iLength;

};

我们可用 struct tagmyStruct varName来定义变量,但是使用tagmyStruct varName来定义变量是不对的。因为struct 和tagmyStruct合在一起才能表示一个结构类型。

2、typedef 为这个新的结构体起一个名字 MyStruct

typedef struct tagMyStruct Mystruct ;

因此,MyStruct 实际上相当于 struct tagMyStruct,我们可使用MyStruct varname 来定义变量。

typedef struct node 

{

char name[20];

struct node *link;

}stu;

这是定义的结构体变量,一个单元包含两个部分,一个用来存放name的数组,一个用来存放下一个单元地址的指向结构体node的指针。假设该单元的地址是p,那么p->name表示第一部分name[20]的地址,p->link表示第二部分,作用是存放下一个单元的地址。

 

 2011.4.23

抱歉!评论已关闭.