【发布时间】:2011-09-27 22:49:18
【问题描述】:
Something::methodname()
{
(unsigned char*) ptr = (unsigned char*) m_pptr;
while ((*ptr || *(ptr+1)) && (((unsigned char*)m_pptr+BUFSIZE)<ptr))
ptr++;
if(ptr == m_pptr)
return ptr;
return ptr + 1;
}
m_pptr 是类的受保护成员。 ptr 是这个函数的本地函数
有人可以帮我理解这段代码的逻辑吗?我知道它可以编译,但我得到的答案不是我所期望的。我正在设置一个充满 A5 的缓冲区,而 while 循环以某种方式失败。它跳过它。任何帮助都会很棒。
这将通过一个缓冲区,如果指针的值或 (ptr+1) 的值是 true,它将增加指针并且 ptr 不能超过缓冲区的大小(由 m_pptr 找到“指向缓冲区开头的指针”+缓冲区大小)也必须为真。 if 语句表示如果 m_pptr(指向缓冲区开头的指针与 ptr 相同,则只返回指针。
这个函数返回一个void* 并且什么都不传递
【问题讨论】:
-
我认为你在某处有一个流浪花括号
-
你实际上并没有说出你期望代码做什么......
-
我很确定它不会编译。
-
很难说这里要问什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。投票结束,推荐here