我有这个函数,我正在尝试转换,但我只是无法理解代码的某些部分发生了什么。谁能帮助我解释代码。我只是想知道他们用指针做什么。在代码中有一些空白的注释,他们用指针做地狱,我只是不明白。
任何帮助表示感谢。
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;
}
答案 0 :(得分:2)
int count = *pPixels++;
取消引用pPixels
指针以获取值并将其分配给count
并递增指针 - 这将使指针指向数组中的下一个元素(m_Pixels
)
index += *pPixels++;
使用index
指向的值递增pPixels
并递增指针 - 这将使指针指向数组中的下一个元素
pPixels += *pPixels;
pPixels += *pPixels;
向前移动指针X位置,其中X是由pPixels