不论是在C语言中,还是在C++语言中,都可以使用typedef来定义一个新数据类型名,其基本语法为:
typedef 已有数据类型名 新数据类型名;
使用这条语句,并没有创建一种新的数据类型,而是将已有的数据类型换了个名称而已,例如:
typedef int INTEGER;
并没有创建一种新的数据类型:INTEGER,实际上INTEGER就是int型数据类型,只不过给int数据类型多取了个名字INTEGER而已。
既然这样,或许你会认为:这不是多此一举吗?其实不是的,存在就有它存在的理由。
我认为使用typedef有3个优点:
1. 简化程序源代码的书写,这是它最基本的用处:
例如定义了一个结构体变量:
struct std
{
int num;
char[10] name;
int age;
};
在声明一个此结构体变量时,可以直接在定义时声明,即
struct std
{
int num;
char[10] name;
int age;
}student1,student2;
也可以使用以下语句来声明:
struct std student1,student2;
但是如果我用typedef来换个名字:
typedef struct std
{
int num;
char[10] name;
int age;
}STUDENT;
或typedef struct std STUDENT;
那么在声明此结构体类型变量时,就可以写成:
STUDENT student1,student2;
同理,共用体,数组等都可以用此方法简化程序代码。C语言的特点就是简洁。
2. 使变量意义更明显,这是使用它的技巧:
例如我用以下语句:
int x,y;
来表示一个矩形的长和宽,很明显x,y的意义不明显,做了注释也不好查找。
如果我用typedef语句来这样定义:
typdef int LENGTH, WIDTH;
在声明变量时,使用
LENGTH x;
WIDTH y;
这样x,y的意义就很明显了。
当然你也可以通过改变变量名来实现,
int length,width;
但是用typedef更方便和通用。C语言中的文件数据类型FILE就是一个例子。
这在C++语言中表现尤为明显,C++中有很多数据类型名,其实它的本质还是已经学过的那些数据类型。
3.或许你使用其他高级程序设计语言更熟练,你还不适应C语言的数据类型名,那么你可以使用typedef语句来将C语言中的数据类型名换成你熟悉的名称,这样你就会更适应。
例如:VB中整型变量是integer,而C语言中是int,那么你可以这样:
typedef int integer;
下面是使用typedef定义常见数据类型的例子:
typedef int NUM[100]; /*定义NUM为含有100个元素的整型数组*/
NUM n; /*定义n为NUM型数组*/
typedef char *STRING; /*定义STRING为指向字符串首地址的指针*/
STRING str; /*定义str为STRING型指针*/
typedef int MAX(); /*定义MAX为返回整型值的函数*/
由以上例子,可以看出要使用typedef来定义新类型名:
先写出原来的定义语句:如int num[100];
再将变量名换成新类型名:int NUM[100];
最后在之前加上typedef:typedef int NUM[100];