访问void *的元素?

时间:2010-06-08 19:29:55

标签: c++

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

使用C ++

4 个答案:

答案 0 :(得分:6)

您需要将其转换为您用于“无符号字节”的相应类型。一旦它被适当地转换,你可以像访问数组一样访问它(访问元素)。

unsigned char* bytePointer = static_cast<unsigned char*>(originalVoidPointer);
unsigned char elementFive = bytePointer[5];

答案 1 :(得分: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];

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

答案 2 :(得分:4)

index[reinterpret_cast<unsigned char*>(voidPointer)]

答案 3 :(得分:1)

你的类型转换。如果它是C,那么你应该使用类似的东西:

((unsigned char *) void_ptr)[index];

如果是C ++,那么你根本就不应该使用void指针。