C++中union和struct的区别
2015-06-09 20:40
211 查看
共用体(union)
一、 基础概念
有时需要使几种不同类型的变量存放在同一段内存单元中。虽然在同一段内存中不同数据类型所占字节数不同,但都从同一地址开始存放,也就是使用了覆盖技术,几个变量互相覆盖。这种使几个不同的变量共占一段内存的结构,称为共同体类型的结构(也称为联合类型)。
二、 声明共用体类型的一般形式:
union 共用体类型名
{
成员表列
};
定义共用体变量的一般形式:
共用体类型名 共用体变量名;
也可以在声明共用体类型的同时定义共用体变量,也可以没有共用体类型名直接定义共用体变量。
union data
{
int i;
char ch;
double d;
}a,b,c;
三、 “共用体”与“结构体”区别
结构体变量所占内存长度是各成员占的内存长度之和。每个成员分别占有其自己的内存单元。共用体变量所占的内存长度等于最长的成员的长度。
四、 对共用体变量的访问方式
不能直接引用共用体变量,只能引用共用体变量中的成员。
a.i; a.ch a.f
不能引用共用体变量:cout<<a;
五、 共用体类型数据的特点
1、 使用共用体变量的目的是希望在同一个内存段存放几种不同类型的数据。注意:在每一瞬时只能存放其中一种,而不是同时存放多种。换句话说,每一瞬时只有一个成员起作用,其他成员不起作用。
2、 能够访问的是共用体变量中最后一次被赋值的成员,在对一个新的成员赋值后原有的成员就失去作用。因此在引用共用体变量时应注意当前在共用体变量中起作用的是哪个成员。
3、 共同体变量的地址和它的各成员的地址相同,为同一个地址。
4、 不能对共用体变量名赋值;不能引用变量名来得到一个值;不能在定义共用体变量时对它初始化;不能用共用体变量名作为函数参数。
六、共用体应用举例
设有若干个人员的数据,其中有学生和老师。学生的数据中包含:姓名、号码、性别、职业、年级。教师的数据包括:姓名、号码、性别、职业、职务。可以看出,学生和教师所包含的数据是不同的。要求输入人缘的数据,然后再输出。(一个学生一个教师)。
一、 基础概念
有时需要使几种不同类型的变量存放在同一段内存单元中。虽然在同一段内存中不同数据类型所占字节数不同,但都从同一地址开始存放,也就是使用了覆盖技术,几个变量互相覆盖。这种使几个不同的变量共占一段内存的结构,称为共同体类型的结构(也称为联合类型)。
二、 声明共用体类型的一般形式:
union 共用体类型名
{
成员表列
};
定义共用体变量的一般形式:
共用体类型名 共用体变量名;
也可以在声明共用体类型的同时定义共用体变量,也可以没有共用体类型名直接定义共用体变量。
union data
{
int i;
char ch;
double d;
}a,b,c;
三、 “共用体”与“结构体”区别
结构体变量所占内存长度是各成员占的内存长度之和。每个成员分别占有其自己的内存单元。共用体变量所占的内存长度等于最长的成员的长度。
四、 对共用体变量的访问方式
不能直接引用共用体变量,只能引用共用体变量中的成员。
a.i; a.ch a.f
不能引用共用体变量:cout<<a;
五、 共用体类型数据的特点
1、 使用共用体变量的目的是希望在同一个内存段存放几种不同类型的数据。注意:在每一瞬时只能存放其中一种,而不是同时存放多种。换句话说,每一瞬时只有一个成员起作用,其他成员不起作用。
2、 能够访问的是共用体变量中最后一次被赋值的成员,在对一个新的成员赋值后原有的成员就失去作用。因此在引用共用体变量时应注意当前在共用体变量中起作用的是哪个成员。
3、 共同体变量的地址和它的各成员的地址相同,为同一个地址。
4、 不能对共用体变量名赋值;不能引用变量名来得到一个值;不能在定义共用体变量时对它初始化;不能用共用体变量名作为函数参数。
六、共用体应用举例
设有若干个人员的数据,其中有学生和老师。学生的数据中包含:姓名、号码、性别、职业、年级。教师的数据包括:姓名、号码、性别、职业、职务。可以看出,学生和教师所包含的数据是不同的。要求输入人缘的数据,然后再输出。(一个学生一个教师)。
相关文章推荐
- C++ protected 和 private 在子类继承时的区别
- C++中类的多态与虚函数的使用
- OC语言Block
- C++获取系统时间
- WebBrowser之获取跳转页面的Document接口源码
- C++之预定义类型IO格式控制
- 第十四周项目4 - 处理C++源代码的程序(排查main())
- C++之标准设备IO操作流
- C++中的static关键字的总结
- C语言指针数组和数组指针
- C++中的4个类型转换关键字
- Cpp Primer<<学习IO标准库--输出缓冲区的管理、文件输入与输出_6
- c++公用数据的保护
- 分数的加减乘除(C++的有理数类)
- 分数的四则运算(c++)
- C++中map容器的说明和使用技巧
- C++中四种强制类型转换
- C++基础知识总结
- VC++ 完整的例子(电话本管理)
- c++ explicit