在 C 中,转换/访问相同的内存是不同的变量

Don*_*Don 5 c memory pointers

如果我有 4 个字节的内存并且希望以 unsigned long L和 char c[4]的形式访问该内存。在 C 中执行此操作最有效的方法是什么?

例如,如果我将L设置为 300,则字节将设置为0x0000012c,如果我访问c[3]我希望看到0x2c

如果我将c[3]加一,它就会变成0x2dL现在的值为 301

谢谢

dbu*_*ush 3

您可以创建以下union两种类型之一:

union u1 {
    unsigned long l;
    char c[sizeof(unsigned long)];
};
Run Code Online (Sandbox Code Playgroud)

然后,如果您创建联合类型的变量,则可以写入一个成员并读取另一个成员。

但请记住,结果取决于系统的字节顺序。大多数基于 x86 的系统都是小尾数法,这意味着最低有效字节在前。如果是这样的话,该c[0]成员实际上将具有 value 2c