buffer是我的课程中受保护的void*部分。

void* ptr;
ptr= buffer;

if(ptr == pvTxt)
  return ptr;

while (*((unsigned char*)ptr) || *(((unsigned char*)ptr)+1))
  ((unsigned char*)ptr)++;

return *((unsigned char*)ptr)+1;


一切取决于:

((unsigned char*)ptr)++;

return *((unsigned char*)ptr)+1;


很好,但我知道铸造有问题吗?

另外在我的主要我有:

g_pvTxt = new unsigned char[BUFSIZE];
memset (g_pvTxt,0,BUFSIZE);


鉴于上述问题,我如何追加数组。创建一个数组/附加到它。无法使用std::vector,因为它是嵌入式系统

为了进一步解释循环:

在txt条目之后,将有一个空终止符。在所有条目的末尾都有一个双null。因此,在while循环中,如果指针指向的值是false(0或00)或ptr || ptr+1,它将使计数器递增,直到到达下一个可以附加值的位置。

最佳答案

您为什么不只对unsigned char*进行一次强制转换?

unsigned char* ptr= static_cast<unsigned char*>(buffer);

if(ptr == pvTxt)
    return ptr;

while (ptr[0] || ptr[1]) // *(ptr+1) would work as well
    ptr++;
return *ptr+1;


如果要追加到缓冲区,但不能使用std::vector,则可以执行类似的操作:分配更大的缓冲区,将所有内容复制过来并删除旧缓冲区。

关于c++ - 指针有问题吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7562826/

10-11 23:11
查看更多