我正在尝试将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
。看不见就很难说。有关
data
和CImg其他成员函数的更多信息,请参见http://cimg.eu/reference/structcimg__library_1_1CImg.html。关于c++ - 将未知大小的2D数组传递给C++中的函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35559928/