2013-10-16 194 views
-3

讓我們聲明:參考對象

... 
int a= 5; 
int& b= a; 
... 

我不明白,ab之間有什麼區別。我想,那ab只是地址。但是這個地址在內存中呢?所以,讓我們定義一個函數:

int foo(int& x) 
{ 
    return x; 
} 
... 
foo(a); 
foo(b); 

foo在呼喚什麼是發生?即當我們通過ab的地址返回值時,我們將返回一個值?

+0

'B'僅僅是'了'另一個名字。把它想成別名吧。你用'b'做的任何事情,你真的用'a'做。至於函數,它是'void',所以返回任何東西都沒有意義。 – juanchopanza

+1

什麼?另外,你不能從'void'函數返回一些東西。 –

+0

[C++中指針變量和引用變量之間有什麼區別?]可能的重複(http://stackoverflow.com/questions/57483/what-are-the-differences-between-pointer-variable-and-reference-可變式-C)。另請參見[引用存儲的值是多少?](http://stackoverflow.com/questions/412084/what-value-does-a-reference-variable-in-c-store) –

回答

4

代碼中會發生什麼ab實際上是相同內存位置的別名。

因此

foo(a); 

foo(b); 

實際上是相同的。

1

http://www.cplusplus.com/doc/tutorial/pointers/

閱讀了有關詳細信息,事情通常都非常好詳細的cplusplus.com文章

+1

-1:沒有指針在這裏,和cplusplus.com是一堆臭屁股。 –

+0

@JohnDibling從某種意義上說,這裏實際上有指針。首先,OP討論地址,其次,引用基本上是很好的指針。如果您沒有專門針對'http:// www.cplusplus.com/doc/tutorial/pointers /',那麼您對'cplusplus.com'的看法在這裏是無關緊要的。 – stefan

+0

@stefan:cplusplus.com上的鏈接頁面指出,指針和數組是相同的東西。這是錯誤的。我確信我可以在該特定頁面上發現更多錯誤,但我不同意我的觀察,即cplusplus.com是一個可憐的資源,這是無關緊要的。隨着整個網站灑滿了許多錯誤,我的感覺就是根本無法將它作爲資源信任。尤其是新手,他們根本不知道好信息和壞信息之間的區別。他們怎麼可能? –