【发布时间】:2014-09-04 01:07:40
【问题描述】:
我一直在努力寻找以下两段代码之间的区别。
这...
int z=10;
int y=&z;
... 无效,而以下内容不会引发任何错误:
int& foo()
{
int z=10;
return z;
}
main()
{
int y=foo();
cout<<y;
return 0;
}
当我尝试运行程序时,它返回了y=10。
我的问题是:
如果y可以使用foo()存储另一个变量的引用,为什么不直接使用y=&z呢?
【问题讨论】:
-
第一个错误是因为
&z是一个指向int的指针。第二个是未定义的行为,因为它返回对局部变量的引用。 -
"int y=&z" 你在这里存储地址...不是参考...
标签: c++ memory-management return return-type