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

时间:2016-02-22 17:23:11

标签: c++ arrays function pointers cimg

我正在尝试将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.
}

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

谢谢

(抱歉是个菜鸟)

2 个答案:

答案 0 :(得分:1)

试试这个:

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

并使SUM函数看起来像这样:

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

您需要传递data(如果您想要指向数据的指针),因为这是CImg提供的内容。它是指向角色的指针,因为它是你拥有的那种CImg;并且它是char*,而不是char**,因为这是数据提供的内容。

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

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

答案 1 :(得分:0)

为什么不将它作为参考传递?

summation = SUM(prettypicture);

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