当前位置: 首页 > news >正文

day16

目录

1 联合体的定义和使用

2 联合体的内存布局 

3 联合体的应用


1 联合体的定义和使用

#include <iostream>using 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 <iostream>using 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;
}

http://www.lryc.cn/news/489569.html

相关文章:

  • 医工交叉入门书籍分享:Transformer模型在机器学习领域的应用|个人观点·24-11-22
  • 【读书】复杂性意义结构框架——Cynefin框架
  • Python模块、迭代器与正则表达式day10
  • Hutool工具类生成二维码
  • wpf 事件转命令的方式
  • 第二十八章 TCP 客户端 服务器通信 - JOB命令示例
  • 「Mac玩转仓颉内测版19」PTA刷题篇10 - L1-010 比较大小
  • C++趣味编程玩转物联网:用树莓派Pico实现一位数码管动态显示
  • SPA 单页面深入解读:优劣势剖析及实现方法
  • 机器学习系列----关联分析
  • json数据四大加载方式
  • JavaScript 中的数组(Array)对象的内置方法
  • 网络安全之国际主流网络安全架构模型
  • 电子应用设计方案-16:智能闹钟系统方案设计
  • 【FRP 内网穿透 从0到1 那些注意事项】
  • 力扣 LRU缓存-146
  • Elasticsearch简介与实操
  • 用python将一个扫描pdf文件改成二值图片组成的pdf文件
  • Failed to start Docker Application Container Engine
  • ESLint的简单使用(js,ts,vue)
  • 实景三维赋能国土空间智慧治理
  • 树链剖分(重链剖分)
  • 幻读是什么?用什么隔离级别可以防止幻读?
  • [Unity Demo]从零开始制作空洞骑士Hollow Knight第二十集:制作专门渲染HUD的相机HUD Camera和画布HUD Canvas
  • 智能安全配电装置在高校实验室中的应用
  • 网络安全等级保护测评机构管理办法(全文)
  • Flutter:shared_preferences数据存储,数据持久化,token等信息存储
  • FileProvider高版本使用,跨进程传输文件
  • python学习记录18
  • 云原生之k8s服务管理