关于3楼:
原文内容:
“”共用体所占内存并非是9个char,即9个字节,而是double的两倍,即16个字节,而且每次输出都是它前面离它最近的值“”
补充说明:
这是因为字节对齐
关于5楼:
“字节:8个二进制位构成1个"字节(Byte)",它是存储空间的基本计量单位。1个字节可以储存1个英文字母或者半个汉字,换句话说,1个汉字占据2个字节的存储空间。”
一个汉字占几个字节的存储空间,要看汉字的编码格式;
前不久测出的一个汉字占3个字节的存储空间;还没确定编码格式是UTF-8还是GB213
看了前面大家的内存占用大小计算,都没有分析到点,下面给出部分概念:
编程时经常会需要判断机器是大端机还是小端机,此时使用union就非常方便:
union { char str; int data; }; data=0x01020304; if(str==0x01) { cout<< "此机器是大端!"<<endl; } else if(str==0x04){ cout<<"此机器是小端!"<<endl; } else{ cout <<" 暂无法判断此机器类型!"<<endl; }
注:大端机高位存在低位,小端机反之
union Data{ int i; float f; char str[9]; double d; }data;
共用体所占内存并非是9个char,即9个字节,而是double的两倍,即16个字节,而且每次输出都是它前面离它最近的值
节省内存,有两个很长的数据结构,不会同时使用,比如一个表示老师,一个表示学生,如果要统计教师和学生的情况用结构体的话就有点浪费了!用共用体的话,只占用最长的那个数据结构所占用的空间,就足够了!
通信中的数据包会用到共用体:因为不知道对方会发一个什么包过来,用共用体的话就很简单了,定义几种格式的包,收到包之后就可以直接根据包的格式取出数据。
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
1529C 共用体
关于3楼:
原文内容:
“”共用体所占内存并非是9个char,即9个字节,而是double的两倍,即16个字节,而且每次输出都是它前面离它最近的值“”
补充说明:
这是因为字节对齐
关于5楼:
原文内容:
“字节:8个二进制位构成1个"字节(Byte)",它是存储空间的基本计量单位。1个字节可以储存1个英文字母或者半个汉字,换句话说,1个汉字占据2个字节的存储空间。”
补充说明:
一个汉字占几个字节的存储空间,要看汉字的编码格式;
前不久测出的一个汉字占3个字节的存储空间;还没确定编码格式是UTF-8还是GB213
1528C 共用体
看了前面大家的内存占用大小计算,都没有分析到点,下面给出部分概念:
1527C 共用体
编程时经常会需要判断机器是大端机还是小端机,此时使用union就非常方便:
注:大端机高位存在低位,小端机反之
1526C 共用体
共用体所占内存并非是9个char,即9个字节,而是double的两倍,即16个字节,而且每次输出都是它前面离它最近的值
1525C 共用体
共用体作用
节省内存,有两个很长的数据结构,不会同时使用,比如一个表示老师,一个表示学生,如果要统计教师和学生的情况用结构体的话就有点浪费了!用共用体的话,只占用最长的那个数据结构所占用的空间,就足够了!
共用体应用场景
通信中的数据包会用到共用体:因为不知道对方会发一个什么包过来,用共用体的话就很简单了,定义几种格式的包,收到包之后就可以直接根据包的格式取出数据。