首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于返回值引用,该如何解决

2012-06-09 
关于返回值引用#includeiostreamusing namespace stdint a3int &f(int i){return i}int main(){f(a)

关于返回值引用
#include<iostream>
using namespace std;
int a=3;
int &f(int i)
{
  return i;
}
int main()
{
  f(a)=1;//我想知道这个1赋给了谁?我用的返回值引用不产生副本(临时变量)
  cout<<f(a)<<endl;
  cout<<a<<endl;
 return 0;
}

[解决办法]
赋给了函数的栈内的临时变量i
这个i并不等同于a,f(a)传参时,只是把a的值传给i,返回i的引用,然后把1赋给这个i,所以并不影响a,其实我有一点不明,这个局部变量不是在函数调用后释放了吗?怎么还可以赋给他值,难道只要内存还没有被占用,即使释放了,也可以进行读写?

如果你把代码改一下,传参的时候直接传引用,就可以修改到a的值了

C/C++ code
#include<iostream>using namespace std;int a=3;int &f(int& i){  return i;}int main(){  f(a)=1;//我想知道这个1赋给了谁?我用的返回值引用不产生副本(临时变量)  cout<<f(a)<<endl;  cout<<a<<endl; return 0;} 

热点排行