zoukankan      html  css  js  c++  java
  • typedef 的几种用法

    1. 函数指针:

      看这样一个声明:void *(*)(void *)(void*(*act[3])(void *))(void *(*)(void *), void *);
      晕了没?

      用typedef分解下:

      原声明等价于:
      typedef void *(*Func)(void *);
      Func (Func[3])(Func, void  *);
      即act是一个数组,该数组有3函数指针的成员,每个成员作为函数指针,返回一个void *(*)(void *)型的函数指针,同时每个成员作为函数指针其参数有两个,第一个参数的类型是void *(*)(void *)型的函数指针,第2个参数的类型是void *;
      分解诀窍: 先找名字,再右,后左,右看遇到[]是数组,遇到()是函数,左看遇到*是指针,最后再细心让括号配对就行;

      注:关于复杂声明, K&C的《The C Programming Language》第5章指针与数组,专门写了个dcl递归下降语法分析程序来分解复杂声明,很是有趣;

    2. 结构体
      typedef struct node_t{
        node_t *next;
        void *data;
      } *link;
      等价于:
      typedef struct node_t *link;
      struct node_t{
        node_t *next;
        void *data;
      };

       

  • 相关阅读:
    TP实例化模型的两种方式 M() D()
    implode 函数 把数组拼接成字符串
    用array_search 数组中查找是否存在这个 值
    SVN-001
    PHP-006
    Access数据操作-02
    Access数据操作-01
    Html解析
    浏览器Chrome对WebGL支持判断
    浏览器渲染模式设置
  • 原文地址:https://www.cnblogs.com/mathzzz/p/2592041.html
Copyright © 2011-2022 走看看