c - 指向c中变量的低字节地址

标签 c pointers bit bitwise-and

<分区>

我想知道这是否可行:

例如:

我们有long Lvalue = 0xFF00f41a;

还有int *p;

我们可以指向左值的最后 2 个字节吗

喜欢 p=&Lvalue <<16;

p指向第一个16位值这可能吗?

*p --> f41a;
*(p+1) --->0xFF00;

那么如果

p = 0xa011;

长左值 ---> 0xFF00a011

其实我需要位运算。我有 32 位值,但我只能发送 16 位,如果我更改 16 位,则必须更改 32 位值的前 16 位和后 16 位。

最佳答案

如果您只想要较大的 32 位类型的 16 位,请使用位掩码来完成任务,例如,获取较低的 16 位值:

long value = 0xFF00f41a;
long lower = value & 0xFFFF;

要更改值的低 16 位,请使用位操作:

lower = <some thing new>;
value = (value & 0xFFFF0000) | lower;

不要使用指针访问部分 32 位值,当您取消引用它时,它会产生未定义的行为。

关于c - 指向c中变量的低字节地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36890101/

相关文章:

c - C 语言递归金字塔星形图案程序

c - Malloc 来构造;分段故障

c - 字节打印和写入

c - 为什么返回指向局部变量或参数的指针是不好的做法?

c# - 将 LSB 和 MSB 相加以获得一个值

mysql - 加快依赖于 BIT 列的 MySql DELETE

c - 打包多个值的二元运算

c - Cudamalloc 的神秘段错误

c - 为什么在这个简单的例子中传递一个简单的指针不起作用

c++ - 从基类识别派生类