typedef 还有一个作用,就是为复杂的声明定义一个新的简单的别名。用在回调函数中特别好用:

1. 原声明:int *(*a[5])(int, char*);

在这里,变量名为 a,直接用一个新别名 pFun 替换 a 就可以了:

typedef int *(*pFun)(int, char*);

于是,原声明的最简化版:

pFun a[5];

2. 原声明:void (*b[10]) (void (*)());

这里,变量名为 b,先替换右边部分括号里的,pFunParam 为别名一:

typedef void (*pFunParam)();

再替换左边的变量 b,pFunx 为别名二:

typedef void (*pFunx)(pFunParam);

于是,原声明的最简化版:

pFunx b[10];

其实,可以这样理解:

typedef int *(*pFun)(int, char*);

由 typedef 定义的函数 pFun,为一个新的类型,所以这个新的类型可以像 int 一样定义变量,于是,pFun a[5]; 就定义了 int *(*a[5])(int, char*);

所以我们可以用来定义回调函数,特别好用。

另外,也要注意,typedef 在语法上是一个存储类的关键字(如 auto、extern、mutable、static、register 等一样),虽然它并不真正影响对象的存储特性,如:

typedef static int INT2; // 不可行

编译将失败,会提示“指定了一个以上的存储类”。

CoolLoser

CoolLoser

103***3350@qq.com2年前 (2018-07-24)

python typedef用法_C typedef相关推荐

  1. python foreach用法_C# 中 foreach 遍历的用法

    foreach循环用于列举出集合中所有的元素,foreach语句中的表达式由关键字in隔开的两个项组成.in右边的项是集合名,in左边的项是变量名,用来存放该集合中的每个元素. 该循环的运行过程如下: ...

  2. typedef用法小结

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

  3. 关于C++中函数指针的使用(包含对typedef用法的讨论)

    关于C++中函数指针的使用(包含对typedef用法的讨论) (一)简单的函数指针的应用. //形式1:返回类型(*函数名)(参数表) char (*pFun)(int); char glFun(in ...

  4. typedef用法(1)

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

  5. typedef 用法详解

    第一部分 基本概念 1.基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等). 在编程 ...

  6. C语言中typedf函数的用法,C语言中typedef用法详解

    在C语言中,经常有如下的用法: typedef struct  tag{    ...} MyType, *MyPtr; 一旦通过如上定以后,就可以用MyType来定义struct tag结构了. 以 ...

  7. c语言typedef的用法,C语言中typedef用法总结,看完就能像编程老手一样熟练运用...

    请看下文 C语言中typedef关键字应用比较常见,许多C语言初学者对它的用法不甚了解.事实上,我们可以用typedef来定义自己习惯使用的数据类型名称,可以替代自己所熟悉的基本类型.数组类型.指针类 ...

  8. C和C++中struct的typedef用法建议

    C和C++中struct的typedef用法建议 参考文章(建议先读) 根据参考的文章,总结一下: 情况1 C语言中: typedef struct{ ···: }aaa; 则aaa是struct类的 ...

  9. c语言typedef(c语言typedef和define)

    什么是C语言 C語言是1972年左右由DennisRitchie一??人在?????室(?稱AT&T)設?開發出?淼碾?腦程式語言.他??r與KenThompson?扇斯餐??UNIX作?I ...

最新文章

  1. 《人工智能爱好者俱乐部》元旦福利预告
  2. Chrome用户请尽快更新:谷歌发现两个严重的零日漏洞
  3. CSS美化网页元素大全
  4. 每日一笑 | 周一,如何才能保持清醒?
  5. 短信宝 php使用,[php] 使用 短信宝 发送短信(thinkphp)
  6. 酷睿i7cpu适合的linux,CPU性能篇 - Core i7-4770K Linux之旅:有喜有忧_Linux新闻_Linux公社-Linux系统门户网站...
  7. ORACLE PL/SQL 实例精解之第二章 通用编程语言基础
  8. 量化投资与Python
  9. oracle 审计变换表空间_Oracle审计日志和审计策略数据表迁移到新表空间
  10. 指针数组 | 数组指针
  11. html页面布局实验原理,Html设计实验报告.doc
  12. 【黑金原创教程】【TimeQuest】【第五章】网表质量与外部模型
  13. 磨金石教育摄影技能干货分享||如何将平凡的窗户拍出美感
  14. 数据库查询近一年来的数据(近三个月、近六个月同理)
  15. win10内存占用过高解决方案
  16. Ubuntu16.04系统+GTX1050TI显卡的tensorflow1.6(GPU版)安装-详细图文
  17. C#基于开源地图GMap的开发示例
  18. ios tableView那些事 (九) tableview的删除
  19. go work 工作区
  20. 怀旧服服务器维护后刷稀有怪么,这6件魔兽世界怀旧服值得刷但掉率低的装备,你刷了多少次刷到的...

热门文章

  1. MySQL-HAVING的用法
  2. Android如何跳转至目标Activity后按返回键不返回前一个Activity
  3. 大家都在用的AI作画Python几行代码就可实现
  4. 在win10中安装vim并配置vimplus
  5. vim ide vimplus搭建踩坑
  6. python获取软件窗口的坐标
  7. swfupload提示“错误302”的解决方法
  8. VLC组播推流播放实操
  9. 4招教你巧过面试性格测试关
  10. python拦截数据包_httphttps,python抓包知多少