如果我有 4 个字节的内存并且想访问这块内存作为 unsigned long L 和字符 c[4] .在 C 中执行此操作的最有效方法是什么?
例如,如果我设置 L 到 300 那么字节将被设置为 0x0000012c ,如果我访问 c[3] 我希望看到 0x2c
如果我增加 c[3] 一,变成 0x2d 和 L 现在的值为 301
谢谢
最佳答案
您可以创建一个 union
两种类型:
union u1 {
unsigned long l;
char c[sizeof(unsigned long)];
};
然后,如果创建 union 类型的变量,则可以写入一个成员并读取另一个成员。但是请记住,结果取决于系统的字节序。大多数基于 x86 的系统都是小端的,这意味着最不重要的字节在前。如果是这种情况,
c[0]
成员实际上具有值 2c
.
关于强制转换/访问相同的内存是 C 中的不同变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69275083/