读/写void *变量的单个字节

42c*_*kes 2 c c++ malloc memset void-pointers

如果我有

void *temp = malloc(128);
memset(temp, 0 , 128);  
Run Code Online (Sandbox Code Playgroud)

我想单独读取第一个字节,这是我在做什么。

char a[2];
strncpy(a, (char*)temp, 1);
int p = a[0];
//p will be zero in this case
Run Code Online (Sandbox Code Playgroud)

Q1。我敢肯定,有一种更优雅的方法可以达到相同目的。如果是这样,那会是什么?

Q2。有没有办法我可以单独更改单个字节的值?

假设我希望第一个字节的值等于int值48(即00110000),我该怎么做?我写的没有任何进展。

Bry*_*hen 6

您可以将其投射以char *访问内存

char *buff = temp;
char p = buff[0]; // read first byte
Run Code Online (Sandbox Code Playgroud)