1. 结构初始化
关键字 strut,Test为自定义名称,大括号中包含着结构存储的数据类型列表。
struct Test
{
int a;
double b;
char num[3];
};
初始化的可以使用列表初始化,也可以单个赋值。
int main()
{
//列表赋值
Test test{1,2.0,{1,2,3}};
//列表大括号内没有值 各个成员将被设置成0
Test test1{0};
Test test4{0};
cout<
2. 结构中的位字段
参考:结构体中的位字段_Oliver King 的小窝-CSDN博客_结构体位字段
3. 共同体
共同体是一种数据格式,和结构一样能存储不同数据类型的数据,但是共同体只能同时存储一种类型。其使用的用途是当数据项使用两种或多种格式(但不会同时使用),可以节省空间。
struct Test
{
int a;
double b;
char num[3];
union id
{
int id_num;
double id_dou;
}id_val;
};
int main()
{
//列表赋值
Test test{1,2.0,{1,2,3},.id_val.id_num = 12};
cout<
结构体和联合体的区别在于:
- 结构体的各个成员会占用不同的内存,互相之间没有影响;而联合体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。
- 结构体占用的内存大于等于所有成员占用的内存的总和(成员之间可能会存在缝隙),联合体占用的内存等于最长的成员占用的内存。
- 联合体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如果对新的成员赋值,就会把原来成员的值覆盖掉。



