社区
C++ 语言
帖子详情
C++中函数指针的作用
tl0324
2005-10-16 08:14:37
小弟才开始学习C++,在书中和网上都未找到关于函数指针作用方面的内容
请各位高手帮忙讲解一下!
...全文
2370
17
打赏
收藏
C++中函数指针的作用
小弟才开始学习C++,在书中和网上都未找到关于函数指针作用方面的内容 请各位高手帮忙讲解一下!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
useresu
2005-10-17
打赏
举报
回复
实际操作中:
windows中常用的回调函数
就是函数指针实现。
具体可参看msdn
tl0324
2005-10-17
打赏
举报
回复
呵呵!谢谢了哈!
zhwang_1999
2005-10-17
打赏
举报
回复
谢谢各位高人的热情指导
allen_wang
2005-10-17
打赏
举报
回复
函数指针增加了程序设计的灵活性。
回调函数是一种例子。
我曾经写过一个命令行程序,有很多命令,于是构着了一个结构的数组,大概是这样
struct{
char *cmd_name;
bool (*cmd_fun)();
}cmd_info_list[MAX_CMD_NUM];
程序中得到一个用户输入的命令字符串后,就匹配这个数组,找到对应的处理函数。
以后每次添加一个命令,只需要加个函数,然后在这个数组中加一个记录就可以了,不需要修改太多的代码。
这可以算是一种用法把。呵呵。
useresu
2005-10-17
打赏
举报
回复
晕。。。
估计饭碗又被抢了
sungengyu
2005-10-17
打赏
举报
回复
Windows 中,窗口的回调函数就用到了函数指针。
用VC向导
New Projects ----> Win32 Application ----> A typical "Hello World!" application
其中的 WndProc 是 WNDPROC 类型的函数 typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM);
WndProc 作为窗口的回调函数,用来填充 WNDCLASSEX 结构。
WNDCLASSEX wcex;
wcex.lpfnWndProc = (WNDPROC)WndProc;
goodname008
2005-10-17
打赏
举报
回复
windows开发中的回调机制就是很好的应用函数指针的例子:
http://blog.csdn.net/goodname008/archive/2005/01/18/258215.aspx
lance_123
2005-10-16
打赏
举报
回复
void ListTraverse(LinkList L,void (*visit)(int))
{
Link p;
p=L->next;
while(p)
{
visit(p->data);
p=p->next;
}
return OK;
}
void print(int c)
{
printf("%d",c);
}
ListTraverse(L,print);
这算是个例子吧???
呵呵..还请多指教..
v41dugu
2005-10-16
打赏
举报
回复
实际操作中我也没用到过这个。。。所以具体应用也不是很理解。。
v41dugu
2005-10-16
打赏
举报
回复
如果是直接调用一个函数 当然不用这么麻烦 一般都是把指向函数的指针作为另一个函数的形参,比如:
程序中有 int max(int,int);int min(int,int)和add(int,int)3和函数。 而我们又设计了另一个函数fun;我们想让这个fun在第一次调用的时候的求2数的和 ,第2次求2数的较大值 第3次求较小值 我们就可以
int fun(int,int,int (*f)(int,int))
这样 调用的时候就可以
fun(1,2,max);
/////////////////////////////////
fun(3,4,min);
这样了~~
而如果是用一般的形式就要 fun(1,2,max(1,2));
lwhy
2005-10-16
打赏
举报
回复
请问一下,在很多时候我们都可以直接用函数名调用函数,在什么情况下使用函数指针?还有通过函数指针调用实现比直接调用效果好?
这个问题我也想问 因为直接调用和使用函数指针有时候得到的结果是一样的啊
vincents
2005-10-16
打赏
举报
回复
我也想知道哈!!!!!!!!!
支持一下!
顶!
tl0324
2005-10-16
打赏
举报
回复
to v41dugu(一步一生) :
请问一下,在很多时候我们都可以直接用函数名调用函数,在什么情况下使用函数指针?还有通过函数指针调用实现比直接调用效果好?
v41dugu
2005-10-16
打赏
举报
回复
void (*p)(int);
p=fun;
void fun(int x)
{
.............
}
v41dugu
2005-10-16
打赏
举报
回复
不好意思 写错了 是(*p)(int)
v41dugu
2005-10-16
打赏
举报
回复
函数指针就是一个指向函数的指针 指向数组的指针你知道吧
int *p;
int a[10];
p=a;
由于数组名a代表了数组的首地址(起始地址) 所以p=a就是p指向了数组a的首地址。
而函数也是一样 你可以理解为函数名也是函数的首地址。
所以
void *p(int);
void fun(int x)
{
.............
}
你就可以通过 (*p)(3)或者p(3)来调用函数了 效果和fun(3)是一样的
hongtog
2005-10-16
打赏
举报
回复
#include <iostream>
using namespace std;
void func() {
cout << "func() called..." << endl;
}
int main() {
void (*fp)(); // Define a function pointer
fp = func; // Initialize it
(*fp)(); // Dereferencing calls the function
void (*fp2)() = func; // Define and initialize
(*fp2)();
}
C/
C++
指针经典资料大全
C/
C++
指针经典资料大全,十余部经典资料书籍,是您精通C指针的理想教程。
C/
C++
指针的13份资料
C/
C++
指针的13份资料 内容丰富,让编程人员不再害怕指针
C++
函数指针
用法
C++
函数指针
详细理解
函数指针
初识
函数指针
是指向函数的指针,并不等于函数,它能够执行函数的操作,可以跟指针变量一起来理解,其基本声明格式为: type (*ptrname)(形参列表); 例子,声明一个比较两个字符串大小的
函数指针
bool (*cp)(const string s1, const string s2); 需要注意的是,**不要去掉括号!!!**如果去掉括号,含义就变成了返回一个bool指针的函数的声明!
函数指针
指向函数类型 再使用
函数指针
时,
函数指针
可以发挥与函数相同的功效,即
C++
函数指针
及其
作用
详解
查了很多资料,对
函数指针
已了解。
函数指针
指向某种特定类型,函数的类型由其参数及返回类型共同决定,与函数名无关。举例如下: int add(int nLeft,int nRight);//函数定义 该函数类型为int(int,int),要想声明一个指向该类函数的指针,只需用指针替换函数名即可: int (*pf)(int,int);//未初始化 则pf可指向int(in...
【C/
C++
】
函数指针
与指针函数
函数指针
是指向函数的指针变量。因此
函数指针
本质上是一个指针变量,只不过该指针变量指向函数。指针变量也可以指向整型变量、字符型、数组,也可以指向函数。C语言
中
,每一个函数都有一个入口地址,
函数指针
就指向函数的入口地址,可以通过
函数指针
来调用函数。例如结构为类型说明符(*指针变量)(参数)另外定义一个常用函数为voidfun1(),那么ptr=fun;ptr这时就是fun1()这个函数的入口地址了。指针函数是非常常见的,它是一个函数,只不过这个函数的返回值是一个地址值。......
C++ 语言
65,206
社区成员
250,519
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章