gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 11:22:37 25 4
gpt4 key购买 nike

如果我有 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com