typedef可以指定新的类型名来代替已有的类型名
1.简单地用一个新的类型名代替原有的类型名
typedef int Integer;
typedef float Real;
指定用Integer来代替int,用Real来代替float
2.命名一个简单的类型名来代替复杂的类型名
如
float *[]
float (*)[5]
double*(double*)
double(*)()
int *(*(*)[10])(void)
这些类型名十分复杂,容易写错,可以用简单的类型名代替它们。
如
typedef struct
{
int month;
int day;
int year;
}Date;
以上声明了一个新类型名Date代表上面的结构体类型。
typedef int Num[100];
Num a;
typedef char *String;
String p,s[10];
声明String为字符指针类型。
typedef与宏定义的区别
表面上看起来是没什么差别,但是宏定义是在预编译时处理的,只能做简单的字符串替换,而typedef是编译时处理,不是简单的字符串替换。
使用typedef名称有利于程序的通用与移植。