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/