关于返回值引用
#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的值了
#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;}