通过引用

时间:2018-04-01 23:04:24

标签: c++ visual-studio-2017

我知道这个特定主题有多个答案,但我还没有找到适用于我的用例的内容。

我有一个2D数组(9x9),我需要通过引用传递给一个函数,这样它就可以在函数完成之后存储在主程序中。

这是函数声明:

void ReadFile(ifstream& infile, string fileName, string filePath, int array[9][9]) // Opens, reads, outputs and closes the file

我打开的文件是一个9x9的数字网格,我需要将该网格存储到main中的局部变量(9x9整数数组)中。

有人知道我怎么能这样做吗?

詹姆斯

1 个答案:

答案 0 :(得分:2)

如果您可以访问C ++ 11功能,我会放弃C风格的数组,转而使用C ++ std::array

#include <array>

using Array = std::array<std::array<int, 9> 9>;

void ReadFile(ifstream& infile, string fileName, string filePath, const Array& array);

然后在你的函数中,你可以像任何其他变量一样copy这个数组。您还可以获得各种好处,例如size()方法和迭代器访问。从cppreference(见上面的链接):

  

结构体结合了C风格的性能和可访问性   具有标准容器优点的数组,例如知道它   自己的大小,支持作业,随机访问迭代器等。