1、定义一种类型的别名,保存原先类型检查。
typedef int* pInt;
pInt pa, pb;
//这两个变量都是指针,你可以看成int* pa;int* pb;
2、用typedef声明少一个struct直接写:结构名 对象名。
struct test
{
int x;
int y;
};
test结构体的结构名,声明对象名时就要跟随struct;
typedef struct test
{
int x;
int y;
};
而这个你把结构体想成是A就有typedef A test;
test是结构体的结构名,有没有发现这样就少了一个struct;
typedef struct test
{
int x;
int y;
}test1,test2,test3;
而这种你把结构体想成是A就有typedef A test,test1,test2,test3;
test,test1,test2,test3都是结构体的结构名,你把typedef A看成int类型定义变量时int test,test1,test2,test3;(根据编译原理语法分析中文法G(D)规则构造分析树在根据语义分析语义规则中的继承属性每个变量都是(int 类型))
3.用typedef来定义与平台无关的类型,也就是说当你跨平台修改程序时,你只要现在中间那个类型就可以。
typedef int DATA;
这个int在不同的平台上他的字节数不一样,你只要修改这个其他的地方就不需要修改。
4.为复杂的声明定义一个新的简单的别名使原声明的最简化。
typedef int (*A) (char, char);//函数指针
int (*A) (char, char);
首先找到变量名A,外面有一对圆括号,而且左边是一个*号,这说明A是一个指针;然后跳出这个圆括号,先看右边,又遇到圆括号,这说明(*A)是一个函数,所以A是一个指向这类函数的指针,返回值类型是int。
typedef int (*A) (char, char);
int (*) (char, char)相档于指向这类函数的指针,而A只是一个函数名称,所以typedef 指向这类函数的指针 函数名称;即把int (*) (char, char)看成一个整体pfunc,typedef pfunc A;