我有一个关于使用引用运算符传递数组的问题。我想编写使用引用运算符传递数组的代码。然后我试了
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 :(得分: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 ++标准不允许定义对象的引用数组。