你能帮忙解释一下这段代码吗?

时间:2011-06-09 09:54:00

标签: c++ pointers pointer-arithmetic

我有这个函数,我正在尝试转换,但我只是无法理解代码的某些部分发生了什么。谁能帮助我解释代码。我只是想知道他们用指针做什么。在代码中有一些空白的注释,他们用指针做地狱,我只是不明白。

任何帮助表示感谢。

WORD** m_Pixels;

int pixel(int x, int y)
{

    if (x<0 || y<0 || x>=m_Width || y>=m_Height)
        return -1;

    WORD    *pPixels = m_Pixels[y];

    //
    int count = *pPixels++;

    int index = 0;

    register int i;

    if (count > 0)
    {
        i = count;
        do {
            // 
            index += *pPixels++;

            if (x < index)
            {
                return -1;
            }

            //      
            index += *pPixels;

            // 
            pPixels += *pPixels;

            pPixels++;


            // 
            index += *pPixels;

            // 
            pPixels += *pPixels;

            pPixels++;

            if (x < index)
            {
                return pPixels[x-index];
            }
        } while (--i);
    }

    return -1;
}

1 个答案:

答案 0 :(得分:2)

int count = *pPixels++;

取消引用pPixels指针以获取值并将其分配给count并递增指针 - 这将使指针指向数组中的下一个元素(m_Pixels


index += *pPixels++;

使用index指向的值递增pPixels并递增指针 - 这将使指针指向数组中的下一个元素


pPixels += *pPixels;
pPixels += *pPixels;

向前移动指针X位置,其中X是由pPixels

指向的值