【发布时间】:2013-04-25 17:45:59
【问题描述】:
long double i, *ptr;
ptr = &i;
我想修改第4个字节的值。long double的大小是8个字节。那么可以通过从 *ptr 中减去 4 来实现吗? 即
(ptr)-4 = 9;
【问题讨论】:
-
您必须使用位运算符来提取字节,修改要修改的字节,然后重新组合它们。无论您是否使用指针,这都适用。顺便说一句,通常当人们想要这种字节提取/修改/重组的事情时,他们正在处理整数。您确定要将
i设为浮点变量吗? -
实际上是指针概念的新手,上面的代码可能是错误的。我认为我取消引用上面的 ptr .. ptr-4 会做什么?
-
不,ptr+1 不会访问第九个字节。如果 ptr 当前是地址 10,那么 ptr+1 将是地址 18,因为 sizeof(ptr) 为 8。请阅读eskimo.com/~scs/cclass/notes/sx10b.html,或 Vishy 的链接