c++关于指向函数的指针变量问题。

突然想起一个久违了的问题。//定义一个指向函数的指针变量int(*fp)(int,int);intresult,a=1,b=2;//假设intf_i(int,int);已... 突然想起一个久违了的问题。
//定义一个指向函数的指针变量
int (* fp)(int,int);
int result,a=1,b=2;
//假设int f_i(int,int);已经定义并声明过了
fp=f_i;
请问下:
result=fp(a,b);
和result=(* fp)(a,b);
这两种写法哪种正确啊?好像试了下都可以得到正确结果。
展开
 我来答
百度网友834a0a1e3
2015-01-15 · TA获得超过835个赞
知道小有建树答主
回答量:1031
采纳率:62%
帮助的人:173万
展开全部
C++调用函数的时候就是转向函数的入口地址,而函数指针就是保存的函数的入口地址
所以你使用发fp(a,b)调用就相当于函数名调用
你使用(*fp)(a,b)调用相当于把a,b作为参数,传递到fp指向的地址
所以效果是一样的
其实函数调用的时候使用函数名 f_i(a,b) 和 (*f_i)(a,b) 也能得到正确的结果
道理也是一样的

最后有一个问题就是不知道是否和编译器,可能不同的编译器会有不同的处理,我用的g++,没有问题。
建议最好直接使用指针名调用 fp(a,b)
希望对你有帮助。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式