首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
用typedef定义函数指针的问题
时间:
2016-08-22 18:12:55
阅读:
115
评论:
0
收藏:
0
[点我收藏+]
标签:
在学习windows API的时候,遇到下面这段代码
以前见过的typedef的用法都是给一个数据类型取一个别名
typedef oldTypeName newTypeName
这种给数据类型取一个函数名字的还是第一次看到,
于是做了一下实验,如下图:
上图定义了一个TemplateFn模版函数和Addition函数,
用TemplateFn声明了一个变量a,并将Addition赋值给a,
结果编译器报错:
如上图蓝色光标所示,数据不匹配。
原因是因为Addition返回的是一个函数指针,也即地址类型,
而变量a接收的不是一个地址类型的数据,
修改一下代码,如下图将TemplateFn改成函数指针
接下来编译通过。
实验做到这里,还是存在很多的疑惑,
究竟为什么要typedef int (*TemplateFn)(int, int)这么定义?
于是又做了一个实验,从函数指针下手
通过下图的测试代码,终于搞清楚了
原来定义一个函数指针的方式如下:
returnType(*valName)(paramType)
而typedef int (*TemplateFn)(int, int)的作用,
就是将上面int (*a)(int, int)定义变量a的代码简化成用TemplateFn来代替,
使代码更加简介清晰。
那么另外一个问题来了,函数指针一般的用途是在哪里?
我目前想到的一个就是在struct的时候。
关键字struct是在C语言中定义结构体的,它不像C++的类一样有成员函数,
不过它可以通过函数指针来实现结构体的成员函数,例如下面的定义:
上面定义了一个学生的结构体,包含了姓名、性别、年龄以及学生主修的专业,
每一个学生主修的专业方向不同,所以为Major赋予不同的函数指针。
上面就是我对typedef使用的个人理解。
用typedef定义函数指针的问题
标签:
原文地址:http://www.cnblogs.com/zhengjiafa/p/5796283.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!