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

指向返回指针的函数的指针 #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;
else
p=&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;
}

慕丝7291255
浏览 208回答 1
1回答

慕尼黑的夜晚无繁华

你的max函数返回了一个局部地址,因为max函数的参数是值传递,所以会在栈空间复制a和b的副本,函数结束后,参数a和b的空间会被释放,操作一个被释放后的地址的结果是无法预料的。用引用传递a和b就好int *max(int& a,int& b).....注意p的声明也要一样int *(*p)(int&, int&);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python
Java