我有一个256x256的二维浮点数组,我试图将其传递给函数,但是g++给我的错误信息是:无法将'int (*) [256]'转换为'int **'
。 我该如何解决这个问题?
void haar2D(int** imgArr);
int imageArray[256][256];
haar2D(imageArray);
我尝试将函数参数更改为类型
int[256][256]
和int*[256]
,但没有成功。我有一个256x256的二维浮点数组,我试图将其传递给函数,但是g++给我的错误信息是:无法将'int (*) [256]'转换为'int **'
。 我该如何解决这个问题?
void haar2D(int** imgArr);
int imageArray[256][256];
haar2D(imageArray);
int[256][256]
和int*[256]
,但没有成功。函数参数必须像编译器提示的那样声明。
因此,请使用下列方式声明它:
void haar2D( int imgArr[256][256] );
或者
void haar2D( int imgArr[][256] );
void haar2D( int ( *imgArr )[256] );
请注意,声明为数组的参数将被调整为指向它们的元素的指针。
或者您可以将参数声明为数组的引用。
void haar2D( int ( & imgArr )[256][256] );
如果您不想改变函数。
void haar2D(int** imgArr);
您可以尝试更改imageArray。
int **imageArray=new int*[256];
for (int i = 0; i < 256; ++i)
{
imageArray[i] = new int[256];
}
那么
haar2D(imageArray);
std::vector<std::vector<int>> &imgArr
吗? - Fantastic Mr Foximagearray[i][j]
)符号编写了函数体,这可以与向量一起使用吗? - Bobazonskivoid haar2D(int** imgArr);
这样的函数如何确定它所传递的数组的维度,你就会开始理解为什么数组维度很重要。因为二维数组在物理上与使用指向指针的数据引用不同。在后一种情况下,需要额外的数据来确定所引用的数据的大小。 - Andrew Henle