/*
* 共用体:将几个不同类型的变量存放到同一段内存单元。
*
* 特点:
* 1/共用体变量所占的内存长度等于最长的成员长度。
* 2/同一个内存可以存放几种不同类型的成员,但每一个瞬间只能存放其中的一种,而不是同时存放几种,结构体变量起作用的就是最后一次存放的成员。
* 3/只有定一个了共用体变量才能引用他,而且不能引用共用体变量,只能引用共用体变量的成员。不能对共用体变量赋值。
8 4/定义的时候不能初始化。
*
*/
/*
* 存放若干人员的数据,其中有学生和老师,包括:姓名,号码,性别,职业(s:student ; t:teacher),班级(学生),职务(老师)。
*/
#include <stdio.h>
#define MEMBER_NUMBER 2
struct
{
char name[20];
long tel;
char sex;
char job;
union
{
int class;
char postion[10];
}category;
}member_table[MEMBER_NUMBER];
void main()
{
int i;
printf("please input %d members` information!\neg. name tel sex job(s:student ; t:teacher) class or postion\n",MEMBER_NUMBER);
for(i=0;i<MEMBER_NUMBER;i++)
{
scanf("%s %ld %c %c",&member_table[i].name,&member_table[i].tel,&member_table[i].sex,&member_table[i].job);
if(member_table[i].job =='s')
scanf("%d",&member_table[i].category.class);
else if(member_table[i].job =='t')
scanf("%s",&member_table[i].category.postion);
else printf("\ninput error!\n");
}
printf("\nnow the member_table:\n");
for(i=0;i<MEMBER_NUMBER;i++)
{
printf("%s,%ld,%c,%c",member_table[i].name,member_table[i].tel,member_table[i].sex,member_table[i].job);
if(member_table[i].job =='s')
printf(",%d\n",member_table[i].category.class);
else
printf(",%s\n",member_table[i].category.postion);
}
}
C语言-共用体
最新推荐文章于 2023-03-27 21:41:36 发布