天天看点

typedef使用

  代码简化,促进跨平台开发

  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;

继续阅读