2011-06-09 83 views
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; 
} 
+0

指向你从哪里得到这个代码和哪些部分你不明白。 – 2011-06-09 09:56:12

+0

我只是不明白他们做什么,pPixels ++;他们在增加什么? – Michael 2011-06-09 09:57:32

+2

哇,这是一些相当难看的代码 – badgerr 2011-06-09 09:57:46

回答

2
int count = *pPixels++; 

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


index += *pPixels++; 

递增index的值,由pPixels指出并增加指针 - 这将使poi NTER指向下一个元素的数组


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

前进指针X位置,其中X为值,pPixels

+0

真棒队友=)我只是想验证,并且一切似乎都是正确的。谢谢! – Michael 2011-06-09 10:04:28

相关问题