酱坛子

专注C++技术 在这里写下自己的学习心得 感悟 和大家讨论 共同进步(欢迎批评!!!)

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  66 Posts :: 16 Stories :: 236 Comments :: 0 Trackbacks

公告

王一伟 湖南商学院毕业 电子信息工程专业

常用链接

留言簿(19)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 382162
  • 排名 - 63

最新随笔

最新评论

阅读排行榜

评论排行榜

#include <iostream>
using namespace std;

int F1(int N);
int F2(int N);
int MyF(int (*pF)(int), int);

void main()
{
 cout<<"函数指针调用F1,此时的结果为:"<<MyF(F1, 4)<<endl;
 cout<<"函数指针调用F2,此时的结果为:"<<MyF(F2, 4)<<endl;
}

//函数F1、F2、pF的定义
int F1(int N)
{
 return N*N;
}

int F2(int N)
{
 return N+N;
}

int MyF(int (*pF)(int), int N)
{
 return pF(N);
}

posted on 2007-10-08 11:28 @王一伟 阅读(6045) 评论(2)  编辑 收藏 引用

Feedback

# re: 函数指针当参数传入的写法 2013-10-27 10:57 李飞
我没看懂这个,谁能解释一下呀  回复  更多评论
  

# re: 函数指针当参数传入的写法 2013-11-12 16:06 拨云人
@李飞 这个是一种函数的调用方法:函数指针作为输入参数。
解释:本例程中定义了3个函数: F1,F2,MyF。
F1 接受一个int型参数N,返回值是N的平方(也是int型);
F2 接受一个int型参数N,返回值是N的两倍(也是int型);
MyF 接受两个参数:int (*pF)(int) 和 int N。其中 int (*pF)(int) 其实是一个指针,这个指针的名字叫做 pF,它指向一个函数。具体指向哪个函数,只有在我们调用MyF的时候才知道。
例如,在main() 函数中,调用MyF(F1, 4),这个指针就指向F1(pF=F1);当调用 MyF(F2, 4) 时,这个指针就指向F2(pF = F2).
MyF的功能就是返回这个指针所指向的函数的返回值: 若pF = F1,返回N*N,若pF = F2,返回N+N。

你可能会问,为什么要这么麻烦 ? 为什么不在main() 函数中直接用:
cout<<"函数指针调用F1,此时的结果为:"<<F1(4)<<endl;
cout<<"函数指针调用F2,此时的结果为:"<<F2(4)<<endl;

当然,如果你只有F1,F2那么这么做是可以的,但是如果有 F3,F4,F5,F6,那就会显得很混乱,如果F1~F6 都是同类型的函数,那只需要用一个函数MyF就可以了,把F1~F6作为参数给MyF.这样代码就优雅多了也显得专业多了。
还有就是在用到回调函数的时候,这种方法是必要的。
  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理