1.常规变量类型定义
例如:typedef unsigned char uchar
描述:uchar等价于unsigned char类型定义
      uchar c声明等于unsigned char c声明

2.数组类型定义
例如: typedef int array[2];
描述: array等价于 int [2]定义;
      array a声明等价于int a[2]声明

扩展: typedef int array[M][N];
描述: array等价于 int [M][N]定义;
      array a声明等价于int a[M][N]声明

3.指针类型定义
例如:  typedef int *pointer;
描述: pointer等价于 int *定义;
      pointer p声明等价于int *a声明

例如:  typedef int *pointer[M];
描述: pointer等价于 int *[M]定义;
      pointer p声明等价于int *a[M]声明明

4.函数地址说明
描述:C把函数名字当做函数的首地址来对待,我们可以使用最简单的方法得到函数地址
例如: 函数:int func(void);
       unsigned long funcAddr=(unsigned long)func;
      funcAddr的值是func函数的首地址

5.函数声明
例如: typedef int func(void);  
       func等价于 int (void)类型函数
描述1: func f声明等价于 int f(void)声明,用于文件的函数声明
描述2: func *pf声明等价于 int (*pf)(void)声明,用于函数指针的生命,见下一条

6.函数指针
例如: typedef int (*func)(void)
描述: func等价于int (*)(void)类型
       func pf等价于int (*pf)(void)声明,pf是一个函数指针变量

7.识别typedef的方法:
a).第一步。使用已知的类型定义替代typdef后面的名称,直到只剩下一个名字不识别为正确
      如typedef u32   (*func)(u8);
      从上面的定义中找到 typedef __u32  u32;typedef __u8 u8
      继续找到 typedef unsigned int __u32;typedef unsigned char __u8;
      替代位置名称 typedef unsigned int  (*func)(void);
      现在只有func属于未知
b).第二步.未知名字为定义类型,类型为取出名称和typedef的所有部分,如上为
 func等价于unsigned unsigned  int  (*)(unsigned  char);
c).第三部.定义一个变量时,变量类型等价于把变量替代未知名字的位置所得到的类型
     func f等价于unsigned unsigned int  (*f)(unsigned char);

转载自:http://www.52rd.com/Blog/Detail_RD.Blog_liuyahui_21778.html

http://blog.csdn.net/zzxian/article/details/6241716

常见typedef 用法的更多相关文章

  1. C++ typedef用法小结 (※不能不看※)

    C++ typedef用法小结 (※不能不看※) 第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如:char* pa, pb; // 这多数不 ...

  2. typedef用法小结

    typedef用法小结- - 注意:本文转自网络,版权归原作者所有. typedef typedef用法小结- - 这两天在看程序的时候,发现很多地方都用到typedef,在结构体定义,还有一些数组等 ...

  3. (转)typedef用法

    Typedef 声明有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法.不管怎样,使用 typedef 能为代码带来意想不到的好处,通过本文你可以学习用 typedef 避免缺欠,从而使代码更健壮 ...

  4. [转载] C++ typedef 用法详解

    typedef的语法描述 在现实生活中,信息的概念可能是长度,数量和面积等.在C语言中,信息被抽象为int.float和 double等基本数据类型.从基本数据类型名称上,不能够看出其所代表的物理属性 ...

  5. 【转】Java 枚举7常见种用法

    原文网址:http://softbeta.iteye.com/blog/1185573 Java 枚举7常见种用法 博客分类: java java枚举enmu  原创地址:http://blog.li ...

  6. c++ --> typedef用法总结

    typedef用法总结 一.四大用途 用途1  定义类型别名,在大量使用指针的地方,typedef更方便 typedef char* PCHAR; // 一般用大写 PCHAR pa, pb; // ...

  7. Java 枚举(enum) 详解7种常见的用法

    Java 枚举(enum) 详解7种常见的用法 来源 https://blog.csdn.net/qq_27093465/article/details/52180865 JDK1.5引入了新的类型— ...

  8. [C++]typedef用法

    参考:C/C++ typedef用法详解(真的很详细) 四个用途 定义一种类型的别名,而不是简单的宏替换 定义struct新对象的别名 定义和平台无关的类型 为复杂声明定义一个简单的别名 typede ...

  9. C++进阶2. typedef用法

    C++ 中的typedef用法 20131011 Typedef在C++中是一个关键字,他的用法有多重,但是自己又说不全面,所以整理一下: 1.用类型的别名 typedef char* PChar; ...

随机推荐

  1. Android ANR优化 1

    1, 你碰到ANR了吗 在App使用过程中, 你可能遇到过这样的情况: ANR 恭喜你, 这就是传说中的ANR. 1.1 何为ANR ANR全名Application Not Responding, ...

  2. extern用法

    Extern用法 用例子给你示范 // 1.cpp ; // 2.cpp 注意没有包含1.cpp #include <iostream> using namespace std; exte ...

  3. pthread_join和pthread_detach的用法

    //从别处拷贝过来的,只作为自己查看方便,原作者不详,请谅解. 一:关于join join join是三种同步线程的方式之一.另外两种分别是互斥锁(mutex)和条件变量(condition vari ...

  4. python中在ubuntu中安装虚拟环境及环境配置

    python中在ubuntu中安装虚拟环境及环境配置 1.升级python包管理工具pip pip install --upgrade pip 备注:当你想升级一个包的时候 `pip install ...

  5. Java笔记8:Hibernate连接Oracle

    1下载hibernate-3.6.0 Final.zip到任意目录,解压缩后得到hibernate目录 2下载slf4j-1.7.13.zip到任意目录,解压缩后得到slf4j-1.7.13 3操作数 ...

  6. android APK反编译及代码混淆

    反编译.查看源代码,需要用到两个工具:dex2jar 和 jdgui dex2jar(google code) jdgui(google code),最新版本请见 官方 操作很简单,步骤如下: 1.将 ...

  7. 在Linux命令行下查询当前所使用的shell版本与种类的方法

    原文: https://www.jb51.net/LINUXjishu/407463.html ---------------------------------------------------- ...

  8. C++11 可变参数模板构造string列表

    #include <iostream> #include <cstdint> #include <list> #include <string> tem ...

  9. PHP投票实现24小时间隔投票

    l  设置cookie,浏览器都有禁用或者清除cookie的功能 l  设置session,关闭浏览器就没了 所以,我们只能尽量防止重复投票现象 session_start(); //获取ip地址 i ...

  10. C++11: reference_wrapper

    https://oopscenities.net/2012/08/09/reference_wrapper/ Look at this piece of code: 1 2 3 4 5 6 7 8 9 ...