建网站容易吗,ps制作网站教程,大名县建设局网站,怎么创建自己网站平台结构体与联合体的区别
结构体(struct)中所有变量是“共存”的——优点是“有容乃大”#xff0c;全面#xff1b;缺点是struct内存空间的分配是粗放的#xff0c;不管用不用#xff0c;全分配。
而联合体(union)中是各变量是“互斥”的——缺点就是不够“包容”#xff…结构体与联合体的区别
结构体(struct)中所有变量是“共存”的——优点是“有容乃大”全面缺点是struct内存空间的分配是粗放的不管用不用全分配。
而联合体(union)中是各变量是“互斥”的——缺点就是不够“包容”但优点是内存使用更为精细灵活也节省了内存空间。
union DataU
{int i; //4double d; //8char s[7]; //7
};int main()
{cout sizeof(DataU) endl;DataU du;du.s[0] 255;du.s[1] 1;du.s[2] 0;du.s[3] 0;cout du.i endl;char类型占1个字节 du.s[0]255du.s[0]在内存中的值是1111 1111 du.s[1]1 du.s[1]在内存中的值是0000 0001 du.s[2]0 du.s[2]在内存中的值是0000 0000 du.s[3]0 du.s[3]在内存中的值是0000 0000
int类型占8个字节 du.i在内存中的值就是11111111 00000001 00000000 00000000 小端存储左边是低位右边是高位 所以i的实际值是511
联合体的应用 当角色是老师时只用其中的course 当角色是学生时只用其中的score 可以节省空间 struct Info
{char _name[20]; int _role;union{double score;char course[20];}_sc;
};Info a[4] {Info(周老师,0,-1,c),Info(周老师,0,-1,C语言),Info(王同学,1,90,),Info(李同学,1,85,)};for (int i 0; i 4; i){if (a[i]._role 0){cout a[i]._name 是一位老师他是教 a[i]._sc.course 的 endl;}if (a[i]._role 1){cout a[i]._name 是一位学生他的分数是 a[i]._sc.scoreendl;}}