我正在尝试将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.
}
我想将数组传递给求和函数,我知道我应该以某种方式使用指针,但我不知道如何做到这一点。任何帮助将不胜感激。
谢谢
(抱歉是个菜鸟)
答案 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) {
// ...
}