五、 共用体类型数据的特点
1、 使用共用体变量的目的是希望在同一个内存段存放几种不同类型的数据。注意:在每一瞬时只能存放其中一种,而不是同时存放多种。换句话说,每一瞬时只有一个成员起作用,其他成员不起作用。
2、 能够访问的是共用体变量中最后一次被赋值的成员,在对一个新的成员赋值后原有的成员就失去作用。因此在引用共用体变量时应注意当前在共用体变量中起作用的是哪个成员。
3、 共同体变量的地址和它的各成员的地址相同,为同一个地址。
4、 不能对共用体变量名赋值;不能引用变量名来得到一个值;不能在定义共用体变量时对它初始化;不能用共用体变量名作为函数参数。
六、共用体应用举例
设有若干个人员的数据,其中有学生和老师。学生的数据中包含:姓名、号码、性别、职业、年级。教师的数据包括:姓名、号码、性别、职业、职务。可以看出,学生和教师所包含的数据是不同的。要求输入人缘的数据,然后再输出。(一个学生一个教师)。
程序如下:
/*
* test4.cpp
*
* Created on: 2012-4-10
* Author: David
*/
#include
#include
#include //因为在输出流中使用了控制符setw
using namespace std;
struct //声明匿名的结构体
{
int num;
char name[10];
char sex;
char job;
union P //声明共用体类型
{
int grade; //年级
char position[10]; //职务
}category; //成员category为共用体变量
}person[2]; //定义共用体数组person,含两个元素(个人认为就是结构体类型变量)
int main()
{
int i ;
for(i=0;i<2;i++)
{
cin>>person[i].num>>person[i].name>>person[i].sex>>person[i].job;
if(person[i].job=="s")
{
cin>>perosn[i].category.position;
}else if(person[i].job=="t")
{
cin>>person[i].category.position;
}
cout<"No.Name sex job grade/position"<
}
for(i=0;i<2;i++)
{
if(person[i].job=="s")
{
cout<""