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

发布于 2024-11-14 15:41:10 字数 977 浏览 4 评论 0原文

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

任何帮助表示赞赏。

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;
}

I have this function that I'm trying to convert but I just cant understand what is happening in some parts of the code. Could anyone please help me out and explain the code. I just want to know what they do with the pointers. There are some blank comments in the code where they do hell with the pointers, i just dont get it.

Any help appreciated.

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;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

画离情绘悲伤 2024-11-21 15:41:10
int count = *pPixels++;

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


index += *pPixels++;

pPixels 指向的值增加 index 并增加指针 - 这将使指针指向数组中的下一个


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

元素指针 X 位于前面,其中 X 是值,由 pPixels 指向

int count = *pPixels++;

Dereferences the pPixels pointer to get the value and assigns it to count and increment the pointer - this will make the pointer to point to the next element in the array (m_Pixels)


index += *pPixels++;

Increment index with the value, pointed by pPixels and increment the pointer - this will make the pointer to point to the next element in the array


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

Move the pointer X positions ahead, where X is the value, pointed by pPixels

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文