指向返回指针的函数的指针 #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&);
添加回答
举报
0/150
提交
取消