读书人

求赐教,该如何解决

发布时间: 2013-01-25 15:55:29 作者: rapoo

求赐教
#include<iostream.h>
int f(int i)
{
return ++i;
}
int g(int &i)
{
return ++i;
}
int main()
{
int a(0),b(0);
a+=f(g(a));
b+=f(f(b));
cout<<a<<"\t"<<b;
}为什么第一个结果是3,f(int i)与g(int &i)的区别是什么?

[解决办法]
g(int &i)中,用&修饰变量,表明是引用,那么对i的操作就是对传入的变量的操作,跟用指针差不多,但引用和指针还是有不同的。所以,当第一次调用g(a)时,a本身执行了自加变为1,再执行f(1),返回值2,再执行a+=2;此时的a的值已经是1了,再加2就为3了呗。而f(int i)只是单纯的形参,不能改变传入变量的值。

建议看下引用的相关知识。

读书人网 >C++

热点推荐