访问void*的元素?

jma*_*erx 1 c++

我有一个void指针,想要从中访问元素.我如何将void*转换为无符号字节指针,以便我可以访问其元素(我知道它实际上是无符号字节).谢谢

使用C++

Ree*_*sey 6

您需要将其转换为您用于"无符号字节"的相应类型.一旦适当地进行了渲染,您就可以像访问数组一样访问它(访问元素).

unsigned char* bytePointer = static_cast<unsigned char*>(originalVoidPointer);
unsigned char elementFive = bytePointer[5];
Run Code Online (Sandbox Code Playgroud)

  • OP表示他们是"无符号字节".据推测,他有一个`typedef char byte;`定义. (4认同)
  • 也许我错过了一些非常明显的东西,但我只是看不出任何方法使`unsigned byte`实际引用一种类型或任何方式来使语法`reinterpret_cast <unsigned byte>(originalVoidPointer)`compile.`typedef char byte;`不会神奇地使`unsigned byte`对一个类型有效,而typedef'ed标识符必须是一个字,所以你不能`typedef unsigned char unsigned byte`. (2认同)

CB *_*ley 6

// Assuming you have a void* declared:
void* p;

// and it's initialized to point to a valid object (array of bytes)
// somewhere here...

// ...

// You can convert it to a pointer to unsigned char:
unsigned char* bytes = static_cast<unsigned char*>(p);

// ... and access the bytes using []
unsigned char x = bytes[0];
Run Code Online (Sandbox Code Playgroud)

当然,您使用的字节偏移量必须在void*实际指向的对象大小范围内.