2017-06-01 63 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);