C ++使用引用运算符传递数组

时间:2014-01-06 18:19:09

标签: c++ arrays pass-by-reference

我有一个关于使用引用运算符传递数组的问题。我想编写使用引用运算符传递数组的代码。然后我试了

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]

之间有什么区别?

感谢您的帮助。

2 个答案:

答案 0 :(得分: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指针)。

答案 1 :(得分:0)

实际上这种结构

int & testarray[3]

定义了对整数对象的引用数组。 C ++标准不允许定义对象的引用数组。