如果我有 4 个字节的内存并且希望以 unsigned long L和 char 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)];
};
Run Code Online (Sandbox Code Playgroud)
然后,如果您创建联合类型的变量,则可以写入一个成员并读取另一个成员。
但请记住,结果取决于系统的字节顺序。大多数基于 x86 的系统都是小尾数法,这意味着最低有效字节在前。如果是这样的话,该c[0]成员实际上将具有 value 2c。