C++中的空算术

void arithmetic in C++

本文关键字:C++      更新时间:2023-10-16

>我有一个结构:

struct {
  Header header;
  uint32_t var1;
  uint32_t var2;
  char var3;
  char var4[4];
};

你得到了提示。问题是我通过网络接收字节数组,我首先必须解析标头。所以我首先解析标头,然后我必须解析结构的其余部分。

我试过了

void* V = data;  // which is sizeof(uint32_t) * 2 + sizeof(char) * 5

然后尝试像 (V(, V+sizeof(uint32_t( ...等等。

但它给出了编译器错误。如何通过网络解析此结构的其余部分?

C++ 中数据的基本单位是 char 。它是可以寻址的最小类型,根据定义,它的大小为 1。此外,语言规则特别允许将所有数据视为字符序列。所有 I/O 都以字符序列(或流(的形式发生。

因此,原始数据缓冲区应为char数组。

(另一方面,void *在C++中具有非常具体和有限的用途;它的主要目的是在内存中指定对象的地址。例如,operator new()的结果是一个void *

相关文章:
  • 没有找到相关文章