2012-07-22 22 views
19

可能重複:
What are the differences between pointer variable and reference variable in C++?
What's the meaning of * and & when applied to variable names?「與」 變型後的含義

試圖瞭解在這種情況下的 「&」 的含義

void af(int& g) 
{ 
    g++; 
    cout<<g; 
} 

如果你稱這個功能n並傳遞變量名稱 - 它的行爲與正常void(int g)相同。我知道,當你寫&g這意味着你通過變量g的地址。但是這個樣本中的含義是什麼?

+0

您可以找到這些信息在一個詳細的,已經回答了形式[這裏]( http://stackoverflow.com/questions/57483/what-are-the-differences-between-pointer-variable-and-reference-variable-in-c)。 – chris 2012-07-22 21:43:02

+0

表現得像正常?你嘗試過嗎?(v); AF(V);'? – 2012-07-22 21:44:01

+7

這是一個參考,如果你不知道它是什麼,我強烈建議你閱讀一本C++書。 – 2012-07-22 21:44:24

回答

22

這意味着你通過引用傳遞變量。

事實上,在一個類型的聲明,這意味着參考,就像:

int x = 42; 
int& y = x; 

宣告x參考,叫y

15

&意味着該函數接受代替可變的地址(或引用)的變量。

例如,注意,這之間的區別:此

void af(int& g) 
{ 
    g++; 
    cout<<g; 
} 

int main() 
{ 
    int g = 123; 
    cout << g; 
    af(g); 
    cout << g; 
    return 0; 
} 

而且(不&):

void af(int g) 
{ 
    g++; 
    cout<<g; 
} 

int main() 
{ 
    int g = 123; 
    cout << g; 
    af(g); 
    cout << g; 
    return 0; 
} 
+6

「該&意味着該函數接受地址」...嗯...不... – 2012-07-22 21:48:36

+0

只是指出[void main](http:// stroustrup的.com/bs_faq2.html#空隙主要)。 – chris 2012-07-22 21:48:52

+0

'void main()'很好。這沒什麼錯。當然,我認爲這是不完整的代碼(他錯過了「#include」),所以在他的'void main'周圍會有'namespace lulz {...}。 – 2012-07-22 21:50:43