讓我們聲明:參考對象
...
int a= 5;
int& b= a;
...
我不明白,a
和b
之間有什麼區別。我想,那a
和b
只是地址。但是這個地址在內存中呢?所以,讓我們定義一個函數:
int foo(int& x)
{
return x;
}
...
foo(a);
foo(b);
時foo
在呼喚什麼是發生?即當我們通過a
或b
的地址返回值時,我們將返回一個值?
讓我們聲明:參考對象
...
int a= 5;
int& b= a;
...
我不明白,a
和b
之間有什麼區別。我想,那a
和b
只是地址。但是這個地址在內存中呢?所以,讓我們定義一個函數:
int foo(int& x)
{
return x;
}
...
foo(a);
foo(b);
時foo
在呼喚什麼是發生?即當我們通過a
或b
的地址返回值時,我們將返回一個值?
代碼中會發生什麼a
和b
實際上是相同內存位置的別名。
因此
foo(a);
和
foo(b);
實際上是相同的。
http://www.cplusplus.com/doc/tutorial/pointers/
閱讀了有關詳細信息,事情通常都非常好詳細的cplusplus.com文章
-1:沒有指針在這裏,和cplusplus.com是一堆臭屁股。 –
@JohnDibling從某種意義上說,這裏實際上有指針。首先,OP討論地址,其次,引用基本上是很好的指針。如果您沒有專門針對'http:// www.cplusplus.com/doc/tutorial/pointers /',那麼您對'cplusplus.com'的看法在這裏是無關緊要的。 – stefan
@stefan:cplusplus.com上的鏈接頁面指出,指針和數組是相同的東西。這是錯誤的。我確信我可以在該特定頁面上發現更多錯誤,但我不同意我的觀察,即cplusplus.com是一個可憐的資源,這是無關緊要的。隨着整個網站灑滿了許多錯誤,我的感覺就是根本無法將它作爲資源信任。尤其是新手,他們根本不知道好信息和壞信息之間的區別。他們怎麼可能? –
'B'僅僅是'了'另一個名字。把它想成別名吧。你用'b'做的任何事情,你真的用'a'做。至於函數,它是'void',所以返回任何東西都沒有意義。 – juanchopanza
什麼?另外,你不能從'void'函數返回一些東西。 –
[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) –