C语言-共用体

/*
*   共用体:将几个不同类型的变量存放到同一段内存单元。
*   
*   特点:
*   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);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值