C++引用那有个小问题,请大家指点一下

来源:百度知道 编辑:UC知道 时间:2024/06/07 18:06:10
#include<iostream>
using namespace std;
int &min(int &,int &);
int main()
{
int a=3,b=5;
cout<<"a="<<a<<" b="<<b<<endl;
cout<<"The minimum of a and b is"<<min(a,b)<<endl;
min(a,b)=8;
cout<<"After running min(a,b)=8,a="<<a<<" b="<<b<<endl;
min(a,b)=2*min(a,b);
cout<<"After running min(a,b)=2*min(a,b),a="<<a<<" b="<<b<<endl;
return 0;
}
int &min(int &i,int &j)
{
if(i<=j)
return i;
else
return j;
}
这个程序是没错的,想问一下,min(a,b)=2*min(a,b);这个地方函数是怎么调用的,先调用min(a,b)这个得到b的地址,然后调用2*min(a,b)吗?
指针和引用这块的实在是没搞懂,请也指点下吧

你问的是运算顺序的问题。
等号的结合性是从右向左,所以先计算后面的min(a, b)。
然后计算2 * min(a, b),这里就不再是引用,而生成一个临时量存储乘积的结果。
第三步计算等号左边的min(a, b),返回一个引用,是左值。
最后赋值。

具体的运算过程中变量值的变化你的程序中已经显示清楚了,对照我的说明运行一下就明白了。

指针和引用的总体用法,还是好好读书吧。这段代码大概就是从某C++的书上来的吧?