将未知大小的 2D 数组传递到函数中 C++

Passing a 2D array of unknown size into a function in C++

本文关键字:函数 C++ 数组 未知 2D      更新时间:2023-10-16

>我正在尝试将 2D 数组输入到函数中。我不知道这个数组的行数或列数,它是通过 CImg 加载到 c++ 中的。这是我所拥有的:

// Main function:
int main()
{
    int rows, columns;
    float summation;
    CImg<unsigned char> prettypicture("prettypicture.pgm");
    rows = prettypicture.height();
    columns = prettypicture.width();
    summation = SUM(prettypicture[][], rows, columns);
}
// Summation function:
float SUM(int **picture, int rows, int column)
{
... // there is some code here but I don think this is important.
}

我想将数组传递到求和函数中,我知道我应该以某种方式使用指针,但我不确定如何做到这一点。任何帮助将不胜感激。

谢谢

(对不起,我是菜鸟)

试试这个:

summation = SUM(prettypicture.data(), rows, columns);

并使 SUM 函数如下所示:

float SUM(char* picture, int rows, int column) ...

你需要传入data(如果你想要一个指向数据的指针),因为这就是 CImg 提供的。 它是指向字符的指针,因为这就是您拥有的 CImg;这是一个char*,而不是char**,因为这是数据提供的。

您没有向我们展示 SUM 函数的内部,所以我想知道您是否最好传入 CImg 而不仅仅是它的数据,并调用成员函数atXY来获取位置。 没有看到更多很难说。

有关 CImg 的data和其他成员函数的详细信息,请参阅 http://cimg.eu/reference/structcimg__library_1_1CImg.html 。

为什么不把它作为参考传递呢?

summation = SUM(prettypicture);
float SUM(const CImg<unsinged char>& picture) {
  // ...
}