会员
周边
捐助
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
Socrates的专栏
-----C/PostgreSQL/Python
博客园
首页
新随笔
联系
订阅
管理
C:函数指针解读
函数指针从名子上看就知道它也是一种指针,一个指向函数入口地址的指针,举个简单的例子来看看函数指针的用法。
1、通过函数指针调用函数。
#include <stdio.h> #include <stdlib.h> int Sum(int a, int b) { return a + b; } int Sub(int a, int b) { return a - b; } int main(int argc, char *argv[]) { int iTmp = 0; int (*pf)(int, int); /*申明一个函数指针,它带有两个整形参数,返回一个整形*/ pf = Sum; /*函数指针赋值,使其指向函数Sum*/ iTmp = pf(20, 10); /*调用*/ printf("Sum is : %d\n", iTmp); pf = Sub; /*使其指向函数Sub*/ iTmp = pf(20, 10); /*调用*/ printf("Sub is : %d\n", iTmp); system("PAUSE"); return 0; }
运行结果:
Sum is : 30 Sub is : 10 请按任意键继续. . .
2、函数指针做另一个函数的参数。
#include <stdio.h> #include <stdlib.h> int Sum(int a, int b) { return a + b; } int Sub(int a, int b) { return a - b; } /*定义函数指针类型*/ typedef int (*pfFun)(int, int); /*带有函数指针参数的函数*/ int TestFun(int a, int b, pfFun pf) { int i = 0; i = pf(a, b); return i; } int main(int argc, char *argv[]) { int iTmp = 0; iTmp = TestFun(20, 10, Sum); /*函数指针赋值为函数Sum*/ printf("Tmp is: %d\n", iTmp); iTmp = TestFun(20, 10, Sub); /*函数指针赋值为指针Sub*/ printf("Tmp is: %d\n", iTmp); system("PAUSE"); return 0; }
运行结果:
Tmp is: 30 Tmp is: 10 请按任意键继续. . .
第二种用法就是传说中的回调函数。
不积跬步,无以至千里;不积小流,无以成江海。
posted @
2012-05-13 19:51
Socrates
阅读(
225
) 评论(
0
)
编辑
收藏
举报
刷新页面
返回顶部
公告