-->

如何阅读在C“原始”内存/写类型的值?(How to read/write type values

2019-09-19 11:55发布

如何使这样的工作?

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

Answer 1:

简单的例子:把存储器中作为无符号字符的数组

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

您可以使用整数太大,但你一定要注意你在一次设置的字节数量。



Answer 2:

规则很简单:

  • 每个指针类型(除函数指针)可被转换为并从无效*,无损耗。
  • 你不能对void *指针进行指针运算,而不能解引用它们
  • 的sizeof(char)的等于1,通过定义; 所以递增字符指针的意思是“加1”到“原始”的指针值

从这里就可以得出结论,如果你想进行“原始”指针运算,你要投,并从字符*。



Answer 3:

因此,通过“工作”我假设你的意思是“我怎么提领/上执行指针运算void* ”? 你不能; 你要投它,通常以一个char*如果你只是关心的内存中读取数据块。 当然,如果是这样的话,简单地声明为char*开始。



文章来源: How to read/write type values from “raw” memory in C?