在C++中,参考变量类似的别名(AS-如果具有用于访问相同的变量不同的名称)。因此,
int z=10;
int &y=z; // y is a reference variable, and shares same space of z
y++; // this makes z++ effectively, i.e. z becomes 11
和
int y = &z; // your example is wrong, as rvalue is int * and lvalue is int
现在,当你有,
int& foo()
{
int z=10;
return z;
}
main()
{
int y=foo();
cout<<y;
return 0;
}
这是危险的,因为你是返回一个局部变量(z)的参考这是怎么回事在从foo归来后被销毁。 这应该像返回值(而不是引用)一样使用,因为局部变量在从函数返回时超出范围。因此,正确的用法是:
int foo() // return by value
{
int z=10;
return z;
}
main()
{
int y=foo();
cout<<y;
return 0;
}
希望这会有所帮助。建议是永远不会返回局部变量的引用。
第一个错误是因为'&z'是一个指向'int'的指针。第二个是未定义的行为,因为它返回一个局部变量的引用。 – juanchopanza
“int y =&z”在这里你存储的地址...不是它的参考... –