2017-06-01 61 views
0
#include <iostream> 

using namespace std; 

int& fun1(int& ref) 
{ 
    ref = 30; 
    return ref; 
} 

int main() 
{ 
    int i = 10; 

    i = fun1(i); 
    cout << "Value of i:" << i << endl; 

    return 0; 
} 

输出: 值I的:30是否有效返回一个参考如在C++有效参考

是否有效以返回作为参考作为函数返回相同的引用传递函数参数? 根据我的理解,fun1中的ref(int & ref)将在栈中拥有自己的内存位置,并且返回ref的地址是无效的。

+1

该代码完全有效。 –

+2

是的,这是有效的。如果这是引起你的混淆的地方,那么在C++中就没有参考引用。 –

+0

当您通过引用传递参数时,返回相同的引用没有意义,因此没有影响。参考参数的值在函数内更新时更新,在您的情况下更新为“fun1”。 – Kangkan

回答

0

是的,没关系。重要的是所指对象的寿命足够长。

2

引用以各种方式行事,就好像它们是原始对象一样。这意味着采用参考地址给出原始对象的地址,并且参考参考给出原始对象的参考。

虽然存在指向指针的指针,但不存在对引用的引用。

请注意i = fun1(i);中的分配是多余的。在这种情况下,i已经是30。您可以简单地致电fun1(i);