鱼C论坛

 找回密码
 立即注册
查看: 2993|回复: 4

[技术交流] C++函数指针

[复制链接]
发表于 2016-7-17 16:38:13 | 显示全部楼层 |阅读模式
10鱼币
既然函数指针是p2一个地址,为什么还要用p2(av,3),来输出函数地址,我直接输出p2后却只有1,这是为什么
捕获.PNG
捕获1.PNG

最佳答案

查看完整内容

因为:类似于const double (*p2)(const double *,int ) = f1这样定义p2才是一个函数指针,才是一个地址。p2(av,3) == (*p2)(av,3) 所以:const double * (*p2)(const double *,int ) = f1这样定义p2(av,3) == (*p2)(av,3)才是一个地址,单独的p2不表示任何含义。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-7-17 16:38:14 | 显示全部楼层
因为:类似于const double (*p2)(const double *,int ) = f1这样定义p2才是一个函数指针,才是一个地址。p2(av,3) == (*p2)(av,3)
所以:const double *  (*p2)(const double *,int ) = f1这样定义p2(av,3) == (*p2)(av,3)才是一个地址,单独的p2不表示任何含义。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-7-17 16:38:54 | 显示全部楼层
主函数倒数第三行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-7-20 19:08:18 | 显示全部楼层
其实是:
operator << (cout, const double *p){
    cout << *p;
}
也就是cout << p2 等于 cout << *p2
要是你要输出地址的话要这样 : cout << (void *)p2
这样才会输出地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-7-20 19:09:25 | 显示全部楼层

这是cout直接帮你输出内容,要是用printf就不会了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 06:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表