标题: C语言函数指针的探索 [打印本页]

作者: xueer    时间: 2013-7-31 01:31
标题: C语言函数指针的探索
一谈到C语言,很多学过编程的同学会感觉比较容易。但是谈到C语言的指针,大多数的同学就不这么认为了,但是当谈到函数指针时,很多在校的同学更是望而却步。今天就来探索一下函数指针的使用:
用过Visual studio的同学一定会对微软的自动提示功能大为惊叹,编写C语言有没有好的工具呢,答案是肯定的。向大家推荐一款Source Insight软件,使用方法大家自己摸索。
1.函数指针的声明,初始化与调用

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



//按键处理函数

//主函数


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





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1