long double i, *ptr;
ptr = &i;

我想修改第4字节的值。长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/

10-11 19:12
查看更多