long double i, *ptr;
ptr = &i;
我要修改4号字节的值,long double的大小是8字节。那么是否可以从 *ptr 中减去 4 呢? 即
(ptr)-4 = 9;
最佳答案
您可以通过将指向对象的指针转换为指向unsigned char
的指针然后通过该指针访问字节来访问表示对象的字节。例如,i
的第四个字节可以通过以下方式设置为 9:
unsigned char *p = (unsigned char *) &i;
*(p+4) = 9;
但是,您不应在没有充分理由的情况下这样做。它会遇到可移植性问题,只应为特殊目的使用,并仔细注意 C 标准和/或 C 实现的文档。如果你进一步解释为什么你想做这样的事情,可能会展示更好的方法或解释危险。
请注意,字节 4(从字节 0 开始编号)的正确地址是 p+4
,而不是问题中使用的 p-4
。
关于c++ - 用指针修改字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16221349/