2014-01-06 43 views
0

我有一個關於傳遞數組引用運算符的問題。我想編寫使用參考運算符傳遞數組的代碼。然後我試了C++傳遞數組使用引用運算符

void swap(int &testarray[3]){ 
// code 
} 

它給我錯誤。它說,

/main.cpp:5: error: declaration of 'testarray' as array of references 

然而,當改變了我的代碼

void swap(int (&testarray)[3]){ 
    // code 
    } 

它運行正常。只有區別是有支架。

爲什麼它需要托架和是什麼INT(& testarray)之間的差[3]和int & testarray [3]

感謝您的幫助。

+0

爲什麼你想要通過引用傳遞數組? – Cornstalks

+0

@Cornstalks你爲什麼不想通過引用傳遞數組? @burakim:既然你已經標記了這個C++ 11,你可以切換到'std :: array '並且避免這種C語言的奇怪語法。 – Praetorian

+0

@Praetorian:因爲數組不能被賦值,並且已經衰減到指針。 – Cornstalks

回答

6

void foo(int &testarray[3])由於優先級而被解釋爲void foo((int &)testarray[3])。而且引用數組是非法的。

void foo(int (&testarray)[3])被解釋爲你想要的。 (3 int的數組的引用)。

void foo(int testarray[3])相當於void foo(int testarray[]) 衰減到void foo(int *testarray)。 (int指針)。

0

事實上這種結構

int & testarray[3] 

限定到積分對象的引用的數組。 C++標準不允許定義對象引用的數組。