博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

My sky

把自己角色扮演好,全力以赴每一秒
   scutan.cublog.cn
关于作者  
姓名:tanjun
职业:cs
年龄:22
位置:scu
个性介绍:全力以赴第一秒

我的分类  




使用函数指针作为函数参数的情况

#include<stdio.h>

void fun(int m)
{
 printf("in fun()\n");
 printf("m=%d\n", m);
}

void call(void (*a)(int), int b)
{
 (*a)(b);
 printf("in call()\n");
 printf("b=%d\n", b);
}

int main()
{
 call(fun, 10);
 return 0;
}

在这里,call()函数的第一个参数为一个函数指针类型,所以在调用时直接使用fun作为参数就可以了.当然,根据function-to-pointer原则,也可以写成call(*fun, 10);效果是一样的.

 发表于: 2007-07-28,修改于: 2007-07-28 23:26 已浏览883次,有评论2条 推荐 投诉

  网友评论
  lovezzh 时间:2007-08-15 22:21:10 IP地址:222.212.75.★
输出结果应该是:
in fun()
m=10
in call()
b=10

  ucfree 时间:2008-03-21 22:31:56 IP地址:202.101.245.★
嘿嘿   其实这种类型的参数用得比较少。如果是用户自定义函数,我们拿来直接调用就是了。
不过作为系统接口,更多的时候需要这种参数,如:
void (*singnal(int signo, void (*fun)(int)))(int);
int atexit(void (*fun)(void));
为用户提供自行处理接口。。。。。。。


  发表评论



Copyright © 2001-2006 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们
页面生成时间:0.42139

京ICP证041476号