有没有&有什么区别?解决方法

有没有&有什么区别?#includeiostreamusing namespace stdint& FindMax(int& m, int& n){return(mn ? m

有没有&有什么区别?
#include<iostream>
using namespace std;
int& FindMax(int& m, int& n){
return(m>n ? m:n);
}
void main(){
int m=10,n=20;
cout<<m<<","<<n<<" , The mas is:"<<FindMax(m,n)<<endl;
FindMax(m,n)=50;
cout<<m<<","<<n<<" , The max is:"<<FindMax(m,n)<<endl;
}
//三个&的作用什么?

[解决办法]
有区别的, LZ不是下面一句吗?
FindMax(m,n)=50;
即返回值作为左值, 这时候返回值必须是你的输入参数的引用才可行, 才可以改变参数.

int& FindMax(int& m, int& n) //通过引用把实参传入, 又通过引用返回实参, 这个过程中, 都是直接操作实参.

[解决办法]
这个程序的卖点在于根本没有用到任何的局部函数调用栈变量。
表达太麻烦了。
修饰参数的两个&表示引用传址调用,相当于在函数内部直接操作main函数中的m和n
修饰返回值的&表示返回引用,注意这里不会返回的局部对象的引用,而也是对main中m或者n的引用。

感觉我还需要好好学语文,表达不清,建议你先了解一些典型的引用传参和返回引用的例子了再分析这段程序。