代码简化,促进跨平台开发
typedef行为有点类似#define 宏,用其实际类型替代同义字。
不同点:typedef 在编译时被解释,因此让编译器来 应付超越预处理器能力的文本替换;
用法一:
typedef int (* func)(int, int);-----------这种用法一般用在给函数定义别名的时候;
形式:typedef 返回值类型 (*函数别名)(参数列表)
上面的例子定义func 是一个函数指针, 函数类型是:参数为两个int, 返回值为:int
分析方法如下:
先去掉typedef和别名,剩下的就是原变量的类型。
如:int (*func)(int , int )
char (*pFun)(int); //定义了一个指针变量pFun,它是一个指向某种函数的指针,这种函数参数是一个int类型。
//只有这一句我们还无法使用这个指针,因为我们还没对它进行赋值
char glFun(int a){return ;} //定义量一个函数glFun(),该函数正好是一个以int为参数返回char的函数,
//我们从指针的层次上理解函数,函数的函数名实际上就是一个指针,函数名指向该函数的代码在内存中的首地址;
int main()
{
pFun = glFun;
(*pFun)(2);
return 0;
}
用法二:
typedef 给变量类型定义一个别名:
typedef struct{
int id;
char name[10];
}mystruct;
这里把一个还未命名的结构体直接取了一个mystruct的别名。
这样如果定义结构体的实例可以这样:
mystruct tmp;