我的功能中有这个奇怪的错误。我知道这是一个指针错误,但我无法理解它是什么。
我的代码:
int Minimum(double histogram[] )
{
int iter =0;
int threshold = -1;
double iHisto[256];
for (int i=0; i<256; i++)
iHisto[i]=(double) histogram[i];
double *tHisto = iHisto;
while (!bimodalTest(iHisto))
{
for (int i = 1; i < 255; i++)
{
tHisto[i] = (iHisto[i - 1] + iHisto[i] + iHisto[i + 1])/3;
}
tHisto[0] = (iHisto[0] + iHisto[1]) / 3; //0 outside
tHisto[255] = (iHisto[254] + iHisto[255]) / 3; //0 outside
iHisto = tHisto;//Her is the line where i have the error
iter++;
}
for (int i = 1; i < 255; i++)
{
if (iHisto[i - 1] > iHisto[i] && iHisto[i + 1] >= iHisto[i])
{
threshold = i;
break;
}
}
return threshold;
}
请帮助!!!
答案 0 :(得分:0)
数组变量不能在赋值运算符的LHS上使用。换句话说,数组变量的值不能更改,只能初始化。您可以更改数组的元素,但不能更改数组。
我不清楚你希望在行中完成什么
iHisto = tHisto;
您当然不需要复制内容。 tHisto
初始化为指向iHisto
的第一个元素。可以通过iHisto
以及iHisto
访问tHisto
的元素。
答案 1 :(得分:0)
您可以使用memcpy将数组的内容复制到另一个。
void * memcpy ( void * destination, const void * source, size_t num );