C语言详细笔记--构造数据类型(共用体)

目录

一、共用体类型声明

二、共用体变量的定义

三、共用体变量的初始化

四、共用体变量的引用


一、共用体类型声明

共用体类型是一种多个不同类型数据共享存储空间的构造类型,即共用体变量的所以成员占用同一个存储空间,一般声明格式如下:

union        共用体名{

        类型说明符 成员名1;

        类型说明符 成员名2;

        ...

        类型说明符 成员名N;

};

例如:

union utype{
    short int a;
    float b;
    char c[3];
};//声明了一个共用体类型utype

 说明:1.和结构体相似,共用体类型声明也不分配内存空间,只说明此类型数据的构造情况,要使用此类型数据还需要定义该类型的变量。

2.union是C语言的关键字,用于说明共用体类型。共用体名和成员名是用户自定义的标识符。

3.共用体中的成员可以是简单变量也可以是数组指针结构体和共用体,即共用体类型允许嵌套定义。

二、共用体变量的定义

和结构体一样,共用体变量的定义也有三种形式

1.先声明共用体类型再定义共用体变量

union utype{
    short int a;
    float b;
    char c[3];
};
union utype x;

2.再声明共用体类型的同时定义共用体变量

union utype{
    short int a;
    float b;
    char c[3];
}x;

3.不指定共用体名而直接定义共用体变量

union {
    short int a;
    float b;
    char c[3];
}x;

说明:1.系统为共用体变量中的所有成员分配以同一地址开始的存储空间,使用覆盖技术共享存储单元。

共享存储单元示意图

2.共用体变量所占空间大小取决于占存储空间最大的那个成员,而不是所有成员的存储空间之和,这点是与结构体变量的本质区别。 

三、共用体变量的初始化

共用体变量在定义时只能对第一个成员的值进行初始化。

union utype{
    short int a;
    float b;
    char c[3];
}x={10};//以上定义共用体变量x的同时给x.a赋值10

四、共用体变量的引用

共用体的引用方法与结构体完全相同,不能整体直接引用,只能引用共用体变量中的某个成员。

一般格式:共用体变量名.成员名

例如如下共用体:
union utype{
    short int a;
    float b;
    char c[3];
}x,y;
则下面均是合法的语句:
x.a=100;
x.b=5.5;
x.c[0]='m';
scanf("%f",&x.b);
printf("%d",x.a);

 说明:1.共用体的成员变量可参与其所属类型允许的任何操作。

2.两个类型相同的共用体变量可以进行赋值操作。例如:

x.a=100;
y=x;
printf("%d",y.a);
//输出的结构应该为100

  • 12
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值