[英]pass multidimensional array c++
当我将2D数组传递给函数或2D数组自动以引用方式作为1D放置时,是否需要添加“&”。
void fnc (int& arr[5][5]) {
}
如果您未指定通过引用&
传递,则它将按值传递。
但是数组会衰减到指针,因此您基本上是按值传递指针,这意味着它指向的内存将相同。
arr
,在函数内部修改arr
会修改原始arr
(不会创建副本)。
同样,一维数组也不会通过引用“自动”传递,它的出现只是因为它们会衰减到指针。
如果您真的想通过引用传递数组,则必须是:
void fnc(int (&arr)[5][5]);
正如Anubis先生所说,如果没有内在括号,您将尝试传递一系列引用,这可能不会有所帮助。
通常一个人会写
void fnc(int arr[][5]);
(您可以编写arr[5][5]
,但是前5个会被忽略,这会引起混乱。)
这将传递数组的地址,而不是数组本身,我认为这是您要实现的目标。
您还应该考虑向量的向量或其他更高级别的数据结构; 原始数组有许多陷阱。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.