为一个数据类型起一个新的别名
typedef int INTEGER;
INTEGER a,b;
a=1;
b=2;
typedef char ARRAY20[20];
ARRAY20 a1,a2,s1,s2;
typedef struct stu{
char name[20];
int age;
char sex;
}STU;
STU body1,body2;
typedef int (*PTR_TO_ARR)[4];
PTR_TO_ARR p1,p2;
typedef int (*PTR_TO_FUNC) (int,int);
PTR_TO_FUNC pfunc;
typedef和#define的区别:
1)可以使用其他类型说明符对宏类型名进行扩展,但对typedef所定义的类型名却不能这样做
#define INTERGE int
unsigned INTERGE n;//没问题
typedef int INTERGE;
unsigned INTERGE n;//错误
2)在连续定义几个变量的时候,typedef能够保证定义的所有变量的均为同一类型,而#define却无法保证
#define PTR_INT int*
PTR_INT p1,p2;
//经过宏替换后,变为 int* p1,p2;
//这使得p1、p2成为不同的类型。p1是指向int类型的指针,p2是int类型
//相反地
typedef int* PTR_INT;
PTR_INT p1,p2;
//p1和p2类型相同,它们都是指向int类型的指针