注:本文系转载,并修改了一些错误。

typedef常见用法

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 *p声明

例如: typedef int *pointer[M];
描述: pointer等价于 int *[M]定义 pointer p声明等价于int *p[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)

[转载]typedef常见用法的更多相关文章

  1. 转载 AutoFac常见用法总结

    第二节:框架前期准备篇之AutoFac常见用法总结   一. 说在前面的话 凡是大约工作在两年以上的朋友们,或多或少都会接触到一些框架搭建方面的知识,只要一谈到框架搭建这个问题或者最佳用法这个问题,势 ...

  2. const和typedef的常见用法详解

    一.说说const 一般而言,const主要是用来防止定义的对象再次被修改,定义对象变量时要初始化变量. 常见用法如下: 1.用于定义常量变量,这样这个变量在后面就不可以再被修改 const int ...

  3. 框架前期准备篇之AutoFac常见用法总结 转载

    框架前期准备篇之AutoFac常见用法总结 一. 说在前面的话 凡是大约工作在两年以上的朋友们,或多或少都会接触到一些框架搭建方面的知识,只要一谈到框架搭建这个问题或者最佳用法这个问题,势必会引起一点 ...

  4. find常见用法

    Linux中find常见用法示例 ·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \; find命令的参数 ...

  5. Linux中find常见用法

    Linux中find常见用法示例 ·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \; find命令的参数 ...

  6. [转]Linux中find常见用法示例

    Linux中find常见用法示例[转]·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;find命令的参 ...

  7. DevExpress 控件 GridControl常见用法

    刚接触DevExpress第三方控件,把GridControl的常见用法整理一下,以供参考: 说明: gcTest   GridControl gvText    GridView //隐藏最上面的G ...

  8. Shell常见用法小记

    shell的简单使用 最近发现shell脚本在平常工作中简直算一把瑞士军刀,很多场景下用shell脚本能实现常用的简单需求,而之前都没怎么学习过shell,就趁机把shell相关的语法和常见用法总结了 ...

  9. JTable常见用法细则+设置某列可编辑+滚动表格

    JTable常见用法细则 JTable是Swing编程中很常用的控件,这里总结了一些常用方法以备查阅.欢迎补充,转载请注明作者与出处. 一.创建表格控件的各种方式: 1)  调用无参构造函数. JTa ...

随机推荐

  1. 转之农民伯伯 IHttpHandler中使用Session实现原理[ASP.NET | IHttpHandler |IRequiresSessionState]

    前言 在实现自己的Handler的时候只需要继承IHttpHandler接口就行了,在Handler中使用Session时,只需要继承一下IRequiresSessionState就行了,到底为什么只 ...

  2. BUG Error:Execution failed for task ':app:dexDebug'.

    Error:Execution failed for task ':app:dexDebug'. > com.android.ide.common.process.ProcessExceptio ...

  3. ideadpad-安装win7

    今天帮一个同学的朋友安装win7, 竟然安不上,很久没有出现安不上系统了, 后来发现他的笔记本是新的类型,预先注意事项为: 1,启动的时候,使用 Fn+F2进入 BIOS. 2,将Boot中的Boot ...

  4. AbstractMethodError using UriBuilder on JAX-RS

    问题描述:Eclipse调试JAX-RS服务没问题,但是在发布服务端时候抛出异常 java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder. ...

  5. window.event对象详细介绍

    1.event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等.event对象只在事件发生的过程中才有效.event的某些属性只对特定的事件有意义.比如,fromEleme ...

  6. PL/SQL 中文转换为\uxxxx格式(unicode)

    用plsql生成json的时候,经常要处理中文的情况. SELECT replace(asciistr('你好,,hello'),'\','\u') FROM dual 输出:\u4F60\u597D ...

  7. oracle的购买价格研究

    如果你是一个架构师,在数据库选型上除了技术选型,更重要的可能是性价比的选择,而oracle是现今排名第一的数据库,因此对oracle的价格有所了解是必须的. 几个要点: 1.oracle授权(也就是购 ...

  8. CoreAnimation2-视觉效果和变换

    圆角 圆角矩形是iOS的一个标志性审美特性.这在iOS的每一个地方都得到了体现,不论是主屏幕图标,还是警告弹框,甚至是文本框.按照这流行程度,你可能会认为一定有不借助Photoshop就能轻易创建圆角 ...

  9. CSS 组合选择符

    CSS 组合选择符 组合选择符说明了两个选择器直接的关系. CSS组合选择符包括各种简单选择符的组合方式. 在 CSS3 中包含了四种组合方式: 后代选取器(以空格分隔) 子元素选择器(以大于号分隔) ...

  10. boost::bind实践

    第一部分源码为基础实践: /*Beyond the C++ Standard Library ( An Introduction to Boost )[CN].chm*/ /*bind的用法*/ #i ...