2010-02-25 103 views
2

在閱讀了關於在Stackoverflow上交換指針地址的描述之後,我有一個關於C++語法參考的問題。C++類型的函數參數的含義是什麼?

如果你有以下簽名的函數:

void swap(int*& a, int*& b) 

什麼爲int * &的含義是什麼?那是指向一個整數的指針的地址嗎?此外,它是一個指針引用,爲什麼它不需要被初始化如下?

void swap(int*& a, int*& b) : a(a), b(b) {} 

這裏的基準問題/答案發布(答案是興趣點): Swapping addresses of pointers in c

+0

謝謝!所有的答案都很有幫助。 – CJJ 2010-02-25 03:34:19

回答

3

爲int指針的引用。該功能將被稱爲如下:

int* a=...; //points to address FOO 
int* b=...; //points to address BAR 
swap(a,b); 
//a now points to address BAR 
//b now points to address FOO 
1

示例演示如何指針引用使用:

int items[] = {42, 43}; 
int* a = &items[0]; 
int* b = &items[1]; 
swap(a, b); 
// a == &items[1], b == &items[0] 
// items in the array stay unchanged 
1

因爲swap這裏是一個函數,而不是一類。你的第二個代碼片斷是無效的C++語法(你正試圖將函數聲明與類構造函數混合使用。)

+0

好的。我沒有注意到第二段代碼中的構造函數。 – 2010-03-03 16:47:00

相關問題