2016-06-10 85 views
-1

我發現了這兩個不同的來源,但它們完全一樣。我想知道是否有區別,但我無法弄清楚。這兩個指針代碼有什麼區別

任何人都可以告訴我的區別,我應該什麼時候使用哪些?

這是第一個:

void function1(int *x) { 
    *x = 100; 
} 

int main() { 
    int var1 = 10; 

    function1(&var1); 
    cout << var1 << endl; 
} 

,這是第二個:

void function2(int &x) { 
    x = 100; 
} 

int main() { 
    int var2 = 10; 

    function2(var2); 
    cout << var2 << endl; 
} 
+0

在'function1'中,'nullptr'是一個有效的參數(應該檢查它)。 – Jarod42

+0

有一種風格約定,它傾向於修改對象的指針。 – Jarod42

+0

[Strongly related](http://stackoverflow.com/questions/114180/pointer-vs-reference) –

回答

2

int *x是一個指針,而int &x是參考。最大的區別可能是你無法改變參考所指向的地方。

0

第一個是指針,第二個是參考。這些想法有一些相似之處,但也有不同之處。

指針是一個C和C++機制,有點「純」,但爲指針算術等高級概念提供了更多posibilies。引用僅僅是C++,並且更安全,更隱含,因爲在使用引用的引用時,引用與正常變量使用相同的語法。如果你想使用或改變它的值,指針會更加明確,因爲你必須使用* var明確地解引用它,並明確地獲得它。