C语言中,可以用typedef为现有的类型(包括int、double、long、结构体等)定义一个别名。别名与标准类型名一样,可以用来定义变量。
1 使用形式
typedef使用形式如下:
typedef 标准类型名 别名;
例如:
typedef int IN;
此后,定义一个整型变量时一下两行代码作用相同:
int a;
IN b;
int类型本身就很简单,在实际编程中不太会对int类型进行如上操作。但是用typedef给结构体之类的较复杂类型定义一个别名,可以使编程更加方便,例如:
typedef struct student
{
int no;
struct student * next;
}STU;
此后,在定义一个student结构体类型变量,或者指向student结构体类型的指针时,可以直接使用STU,此时可以明显看出其优越性:
STU a;//定义了一个名为a的student结构体类型变量
STU * h;//定义了一个指向student结构体类型的指针变量h
//以上两条命令等效于下面两个命令
struct student a;
struct student * h;
2 typedef与#define的比较
typedef与#define有相似之处,都是用实际类型代替同义词。但它们实际是不一样的,区别为typedef由编译器在编译时执行,而define是由预处理器在编译预处理时处理的,且只能做简单的字符串替换。
3 一些说明
用typedef只是给已有类型增加一个别名,并不能创造出新的类型。就如同人一般,除大名外,还可以再取一个小名、笔名、艺名等。不管使用哪个名,人还是这个人,并不能创造出另一个人来。
typedef也可用在定义指针中:
int *n1,n2;
程序员本意是想定义两个int型指针变量,但实际定义出的则是n1是指针变量,而n2是普通的整型变量,可以使用typedef对整型指针进行定义:
typedef int * POINT;
POINT n1,n2;
这种定义方式在需要定义大量指针时,优点更加突出。