我理解 C++ 通过引用传递数组,即使我们不使用引用运算符 (&),但由于添加它没有任何危害(我认为),我很好奇为什么这段代码抛出
declaration of 'matrix' as array of references
void function (int &matrix[2][5]) {
//something
}
int main() {
int matrix[2][3] = {{1,2,3}, {4,5,6}};
function(matrix);
}
在 (&matrix)
中添加括号时有效:
void function (int (&matrix)[2][5]) {
//something
}
最佳答案
&matrix[2][5]
与
(&矩阵)[2][5])
。
前者意味着 matrix
是一个 对 int 的引用的二维数组 后者意味着 matrix
是对 的引用二维整数数组。
由于matrix
在main
中定义为二维数组,所以第二种形式成功。
cdecl工具在这里可以提供帮助:
int (&matrix)[2][5] - declare matrix as reference to array 2 of array 5 of int
int &matrix[2][5] - declare matrix as array 2 of array 5 of reference to int
关于c++ - 为什么在二维数组参数中使用不带括号的引用运算符时会出现错误 "declaration as array of references"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52664469/