赋值中奇怪的不兼容类型

时间:2015-08-07 14:36:20

标签: c++

我的功能中有这个奇怪的错误。我知道这是一个指针错误,但我无法理解它是什么。

我的代码:

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;

}

请帮助!!!

2 个答案:

答案 0 :(得分:0)

数组变量不能在赋值运算符的LHS上使用。换句话说,数组变量的值不能更改,只能初始化。您可以更改数组的元素,但不能更改数组。

我不清楚你希望在行中完成什么

iHisto = tHisto;

您当然不需要复制内容。 tHisto初始化为指向iHisto的第一个元素。可以通过iHisto以及iHisto访问tHisto的元素。

答案 1 :(得分:0)

您可以使用memcpy将数组的内容复制到另一个。

void * memcpy ( void * destination, const void * source, size_t num );

http://www.cplusplus.com/reference/cstring/memcpy/