问一个C++ 函数返回引用的问题。

[复制链接]
查看11 | 回复4 | 2009-3-6 23:05:05 | 显示全部楼层 |阅读模式
#include
using namespace std;
int &zhy(int &i);
int main()
{
int a=10;
int b=zhy(a);
int &c=a;
cout << "b=";
cout << b << endl;
cout << "c=";
cout << c << endl;
b++;
cout << "a=";
cout << a << endl;
cout << "b=";
cout << b << endl;
cout << "c=";
cout << c << endl;
return 0;
}
int &zhy(int &i)
{
cout << "i=";
cout << i << endl;
return i;
}
大家看看上面这个程序,为啥,我传递进函数一个引用时,在返回该引用值的引用给B,可是当B++的时候,在主函数里改变这个引用值。为啥不改变被引用的a,c的值?

回复

使用道具 举报

千问 | 2009-3-6 23:05:05 | 显示全部楼层
把上面的int b=zhy(a);改成int &b=zhy(a);之后,再运行结果就会使a,b,c都为11原因是int b;的声明不是一个引用,而是产生出一个新的变量改变这个变量的值不会影响到原来的值int b=zhy(a);的作用相当是把一个引用的值赋给新的独立的变量b...
回复

使用道具 举报

千问 | 2009-3-6 23:05:05 | 显示全部楼层
你返回引用没错,但是b得到的只是返回引用的那个变量的值,只是一个简单的赋值操作。不是说返回引用了得到返回值的那个变量b就成了a、c的引用。看看下面例子:#include using namespace std; void main(void){ int i = 5; int &ii = i; int ...
回复

使用道具 举报

千问 | 2009-3-6 23:05:05 | 显示全部楼层
int b=zhy(a); 改成int&b=zhy(a);...
回复

使用道具 举报

千问 | 2009-3-6 23:05:05 | 显示全部楼层
你的代码中并没有B这个变量啊!!!...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行