c++ - 为什么在二维数组参数中使用不带括号的引用运算符时会出现错误 "declaration as array of references"?

标签 c++ arrays parameters

我理解 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 是对 的引用二维整数数组

由于matrixmain中定义为二维数组,所以第二种形式成功。

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/

相关文章:

c++ - 使用 glad with a QOpenGLWidget 加载 OpenGL 函数指针

从 CSV 数据构建 C 数组

Java 和编程新手。我究竟做错了什么? (方法,参数)

php - 比较单个数组中的每个索引

javascript - 如何删除 URL 中的参数并将其显示在地址栏中而不会导致 Javascript 中的重定向?

c - 如何修改已传递给 C 函数的指针?

c++ - C++中删除数组中的元素

C++ 快速 cin 输入流

c++ - zlib 解压缩 .zip 文件

javascript - 将对象转换为数组 - 维护命名键