我该如何做这样的事情?
void *memory = malloc(1000); //allocate a pool of memory
*(memory+10) = 1; //set an integer value at byte 10
int i = *(memory+10); //read an integer value from the 10th byte
我该如何做这样的事情?
void *memory = malloc(1000); //allocate a pool of memory
*(memory+10) = 1; //set an integer value at byte 10
int i = *(memory+10); //read an integer value from the 10th byte
简单示例:将内存视为 unsigned char 数组
void *memory = malloc(1000); //allocate a pool of memory
uint8_t *ptr = memory+10;
*ptr = 1 //set an integer value at byte 10
uint8_t i = *ptr; //read an integer value from the 10th byte
您也可以使用整数,但是您必须注意一次设置的字节数。
规则很简单:
由此您可以得出结论,如果要执行“原始”指针算术,则必须在 char* 之间进行转换。
因此,通过“工作”,我假设您的意思是“我如何取消引用/在 a 上执行指针算术void*
”?你不能;char*
如果您只关心读取内存块,则必须将其转换为 a 。当然,如果是这种情况,只需将其声明为 achar*
开头即可。