一、C语言联合体和结构体中变量所占内存unionU有两个成员变量,字符数组占4个字节,整数i占4个字节,所以它们都共享4个字节,unionU占4个字节。
StructA有两个成员变量,其中整数c占用4个字节,类型unionUu也占用4个字节。所以structA的大小就是两者之和,4+4=8字节。
注意,由于这些成员变量的大小都是4字节,所以不需要考虑字节补全等因素。
![](https://img0.baidu.com/it/u=1260395904,3385465798&fm=253.jpg)
二、为什么C++中空类和空结构体大小为1这就是实例化的原因(空类也可以实例化)为了达到这个目的,编译器往往会提供一个空类或者空结构体(C++中的结构体也可以考虑)。像类)隐式添加一个字节,使得空类或者空结构体实例化后在内存中获得唯一的地址,这样空类占用的内存大小就是1个字节。
#include
使用命名空间std
classa{};
intmain()
{
cout<<"sizeof(a)="<return0;
}程序执行的输出结果为:
sizeof(a)=1
以上程序确认空类占用的内存为1字节。