免费团购网站模板,电子商务网站建设与维护管理,自己做的网站是怎么赚钱吗,线上少儿编程课哪个机构最好目录 1 联合体的定义和使用
2 联合体的内存布局
3 联合体的应用 1 联合体的定义和使用
#include iostreamusing namespace std;struct DataS
{int i; double d; char s[10]; };/*联合体 所有成员共享同一段内存 修改一个成员会影响其他成员
{
*/
union DataU
{int…目录 1 联合体的定义和使用
2 联合体的内存布局
3 联合体的应用 1 联合体的定义和使用
#include iostreamusing namespace std;struct DataS
{int i; double d; char s[10]; };/*联合体 所有成员共享同一段内存 修改一个成员会影响其他成员
{
*/
union DataU
{int i; //4个字节double d; //8个字节char s[10]; //10个字节//联合体成员大小由最大的成员决定因此该联合体的大小是10个字节
};
/*
1、定义和使用分开
union DataU
{int i; //4个字节double d; //8个字节char s[10]; //10个字节//联合体成员大小由最大的成员决定因此该联合体的大小是10个字节
};
DataU a,b,c;
2、定义和使用结合
union DataU
{int i; double d; char s[10];
}a,b,c;
3、匿名不想让别人使用
union
{int i;double d;char s[10];
}a,b,c;
*/
int main()
{DataS ds;cout ds.i , ds.d , (void*)ds.s endl;DataU du;cout du.i , du.d , (void*)du.s endl;return 0;
}
2 联合体的内存布局
#include iostream
using namespace std;union DataU {int i; // 4double d; // 8char s[7]; // 7
};int main() {cout sizeof(DataU) endl;DataU du;du.s[0] 255; // 11111111du.s[1] 1; // 00000001du.s[2] 0; // 00000000du.s[3] 0; // 00000000cout du.i endl; // 00000000 00000000 00000001 11111111du.i 256;cout (int)du.s[0] (int)du.s[1] (int)du.s[2] (int)du.s[3] endl;return 0;
}
3 联合体的应用
#include iostreamusing namespace std;struct Info
{char _name[20];int _role;union {double score;char course[20];}_sc;Info(const char name[20], int role, double s, const char c[20]) {strcpy_s(_name, name);_role role;if (s 0) _sc.score s;if (strlen(c) 0) strcpy_s(_sc.course, c);}
};int main()
{Info a[4] {Info(周老师, 0, -1, CGaGa),Info(周老师, 0, -1, Python),Info(周同学, 1, 90, ),Info(肖同学, 1, 88, ),};for (int i 0; i 4; i){if (a[i]._role 0) {cout a[i]._name 是一位老师他是教 a[i]._sc.course endl;}else if (a[i]._role 1) {cout a[i]._name 是一位学生他的分数是 a[i]._sc.score endl;}}return 0;
}