注册 登录
编程论坛 C++教室

有关引用函数返回赋值问题?

九天冥盟 发布于 2017-10-31 20:36, 967 次点击
int &shiyan(int &,int );
 void main()
{
  int n=5,m=6;
  int &a=shiyan(n,m);
  cout<<"a="<<a<<endl;
}
int &shiyan(int &x,int y)
{
   return x;
}
 问题:为什么return x;时,运行结果是正确的。当将其改为 return y;时运行结果就错了!!
  参数x,y不都是 局部变量吗?
  
2 回复
#2
rjsp2017-11-01 08:26
你用的是什么编译器?它在编译时难道不告诉你 返回一个局部变量的引用是操蛋行为 ?

我用VC试了一下:报错 warning C4172: returning address of local variable or temporary
我用g++试了一下:报错 warning: reference to local variable 'y' returned
#3
yangfrancis2017-11-01 13:49
x是引用,引用的是来自外部的变量,所以返回x的引用是可以的。至于y,只能返回一个值
1