C++ union联合

union的大小由其内部最大变量决定,例如包含char、char数组和int的union大小为4个字节。在union中,不同变量共享同一块内存空间,因此对一个变量赋值会覆盖其他变量的值。在VS中使用内存监视器调试显示,对union成员的修改会动态改变内存中的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结论:union大小等同与内部最大变量大小,union内部变量占用共同空间

union大小
这样一个union定义:

union MyUnion
{
	char a;
	char b[2];
	int c;
};

大小为其内部最大变量大小,即c,占4个字节
union中变量共用内存
对于上述union的内部变量进行赋值:

 	MyUnion un;
	un.c = 4;
	un.b[0] = '2'-'0'; //这样内存中便显示2
	un.b[1] = '3'-'0'; //同理3
	un.a = '1'-'0';

设置断点,打开内存监视器(我用的是vs,打开方法见文章vs中调试程序查看变量在内存中的方法
逐步运行,内存变化如下:
刚开始
1
对c进行赋值
2
对b进行赋值
3
3
对c进行赋值
4
总结

  • union大小为其内存中最大变量的大小
  • union中变量公用内存,每次对不同变量赋值,会覆盖其他变量的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值