gpt4 book ai didi

c - c中 union 的内存分配

转载 作者:行者123 更新时间:2023-11-30 16:35:53 25 4
gpt4 key购买 nike

我正在尝试学习 c 中 union 的内存分配,但在尝试这样做时遇到问题

#include <stdio.h>
union abc
{
int a;
char name[5];
};

int main()
{
union abc hh;
printf("Enter two values\n");
scanf("%d%s",&hh.a,&hh.name);
printf("Values are\n");
printf("%d\n%s",hh.a,hh.name);

return 0;
}

如上面的代码所示,我试图将两个值存储在一个 union 中。但是,在输入“23”和“p”值后得到的结果是

Enter two values                                                                                                                 
23
p
Values are
112
p

有人可以帮我解决上面的代码吗

最佳答案

union 体的成员共享内存中的相同空间。这意味着向一个成员写入会覆盖所有其他成员中的数据,并且从一个成员读取的数据与从所有其他成员读取的数据相同成员。

考虑到这一点,您将看到初始值 23 被覆盖,我们得到 pascii 值,即 112 当我们在存储 p 后打印它时。这解释了您所看到的行为。

关于c - c中 union 的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48718022/

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