2012-11-11 105 views
2

可能重複:
difference between a pointer and reference parameter?差異*函數之間及與參數

使用C++我想知道什麼是在參數使用&和*區別?

例如:

void swap(int &a, int &b) 
{ 
    int temp = a; 
    a = b; 
    b = temp; 
} 

這顯然會交換整數a和b。但是下面的函數不會完全一樣嗎?

void swap(int *a, int *b) 
{ 
    int temp = *b; 
    *b = *a; 
    *a = temp; 
} 

我只是想知道什麼時候使用每一個,也許每個的優點。

+4

通常的座右銘是「儘可能使用參考,必要時使用參考」。 –

+4

此外,請參閱[這裏](http://stackoverflow.com/questions/57483/what-are-the-differences-between-pointer-variable-and-reference-variable-in-c)和[這裏](http ://stackoverflow.com/questions/620604/difference-between-a-pointer-and-reference-parameter)。 –

+0

乾杯,對不起復制 –

回答

3

指針和引用之間的區別在於指針可以指向「無」,而引用不能。你的第二個示例應該在提領它們之前應該空指針;沒有必要這樣做的參考。

+0

事實上,可以遵循的良好編碼習慣之一是輸入參數(您不想複製)應該是常量引用而不是指針,輸出可以是指針。 這樣你就不必檢查輸入參數爲空,如果有任何問題,那麼函數調用者需要處理 – Sarang