为了账号安全,请及时绑定邮箱和手机立即绑定

您好,关于指向返回指针的函数的指针,为什么结果返回错误,该怎么改?

您好,关于指向返回指针的函数的指针,为什么结果返回错误,该怎么改?

慕丝7291255 2021-12-09 03:01:18
指向返回指针的函数的指针 #include <iostream> using namespace std; int *max(int a,in指向返回指针的函数的指针#include <iostream>using namespace std;int *max(int a,int b){int *p;if(a>b)p=&a;elsep=&b;cout<<"........."<<*p<<"<<"<<p<<endl;return p;}int main(){int *(*p)(int,int);int x,y;cout<<"输入"<<endl;cin>>x>>y;p=*max;cout<<*(*p)(x,y)<<endl; //这里为什么无法输出y的值?而x的值可以正常输出。cout<<*max(x,y)<<endl;//这句能正常输出。return 0;}
查看完整描述

1 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

你的max函数返回了一个局部地址,因为max函数的参数是值传递,所以会在栈空间复制a和b的副本,函数结束后,参数a和b的空间会被释放,操作一个被释放后的地址的结果是无法预料的。
用引用传递a和b就好
int *max(int& a,int& b)
.....

注意p的声明也要一样
int *(*p)(int&, int&);

查看完整回答
反对 回复 2021-12-12
  • 1 回答
  • 0 关注
  • 207 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信