找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2506|回复: 0
收起左侧

C语言函数指针的探索

[复制链接]
ID:51337 发表于 2013-7-31 01:31 | 显示全部楼层 |阅读模式
一谈到C语言,很多学过编程的同学会感觉比较容易。但是谈到C语言的指针,大多数的同学就不这么认为了,但是当谈到函数指针时,很多在校的同学更是望而却步。今天就来探索一下函数指针的使用:
用过Visual studio的同学一定会对微软的自动提示功能大为惊叹,编写C语言有没有好的工具呢,答案是肯定的。向大家推荐一款Source Insight软件,使用方法大家自己摸索。
1.函数指针的声明,初始化与调用 50.png
51.png

从这里大家可以看出,函数指针其实并没有什么神奇的地方,与int *型的整型指针并无差异。需要说明的是:对于函数的函数名其实就是一个地址,所以h = &welcome也可以写为
h = welcome,一般都是这样应用,在上面只是为了做对比。
2.函数指针作为形参回调函数的实现
我们知道int *指针可以作为函数的参数进行传递并参与运算,但函数指针可不可以作为函数的参数进行传递呢?下面以一个比较实用的单片机常见的例子按键处理函数为大家讲解一下函数指针作为形参的应用。在这里为了让大家看到效果,将button定义为0

52.png
53.png
//按键处理函数
54.png
//主函数
55.png
56.png
3.实用typedef定义函数指针
上面我们使用了void (*handler)(void) 57.png 作为参数进行传递,我们可以实用typedef定义这个函数指针,使程序更加简洁。
改动的地方如图所示,效果上同,请自己测试。
修改的地方
58.png
4.综合例子
使用struct结构体和函数指针结合实现模块化编程的封装
希望对大家有所启发。
例子如下:
led.c的内容如下:
59.png
led.h的内容如下:
60.png
Main.c的内容如下:
61.png
                                                 Main.c part1
62.png
                                                        Main.c part2
运行结果:
62.png
   
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表