我正在尝试使用 void* 在内存中存储几个整数,然后检索它们,但它不断抛出“用于算术的 'void *' 类型的指针”警告。
void *a = new char[4];
memset(a, 0 , 4);
unsigned short d = 7;
memcpy(a, (void *)&d, 2);
d=8;
memcpy(a+2, (void *)&d, 2); //pointer of type ‘void *’ used in arithmetic
/*Retrieving*/
unsigned int *data = new unsigned int();
memcpy(data, a, 2);
cout << (unsigned int)(*data);
memcpy(data, a+2, 2); //pointer of type ‘void *’ used in arithmetic
cout << (unsigned int)(*data);
结果符合预期,但我担心这些警告可能会在某些编译器上变成错误。还有另一种我不知道的方法吗?
我知道这在正常情况下可能是一种不好的做法,但问题陈述要求无符号整数以 2 字节数据包的形式存储和发送。如果我错了,请纠正我,但根据我的理解,使用 char* 而不是 void* 将占用 3 个字节的 3 位数字。