繁体   English   中英

通过多维数组c ++

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM