共用体的使用

共用体是一种特殊的构造类型,它允许不同数据类型共享同一块内存空间。在同一时间,共用体只能存储其中一个成员的值。在C语言中,共用体用于节省内存,因为所有成员都位于同一地址。示例程序展示了如何通过共用体存储和读取数据,以及当数据超出成员变量范围时可能出现的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

共用体是什么

共用体将不同的数据类型组织为一个整体, 需要注意的是,共用体在同一时刻只能存储一个数据成员的值., 共用体变量的地址和它的格式成员的地址都是同一地址

共用体类型同结构体类型一样,都属于构造类型,它在定义上与结构体类型十分相似,定义共用体类型的语法格式如下:

union 共用体类型名称
{
    数据类型 成员1;
    数据类型 成员2;
  。。。
    数据类型 成员n;
};

共用体内的成员共用一块连续的内存,可以把定义好的共用体的大小取决于共用体中最大数据类型的字节数的大小

#include <stdio.h>
#include <stdlib.h>

union jg{
unsigned char a1;
unsigned int a2;
}b;
int main()
{
    printf("请输入一个小于256的正整数\n");
    scanf("%d",&b.a1);                              //对共用体a1进行储存
    printf("第一次%d\t%d\n",b.a1,b.a2);               //对共用体a1,a2进行输出
    printf("请再次输入一个小于256的正整数\n");
    scanf("%d",&b.a2);                              //对共用体a2进行储存
    printf("第二次%d\t%d\n",b.a1,b.a2);             //对共用体a1,a2进行输出
    printf("请输入一个大于256的正整数\n");
    scanf("%d",&b.a1);                              //对共用体a1进行储存
    printf("第一次%d\t%d\n",b.a1,b.a2);             //对共用体a1,a2进行输出
    printf("请输入一个大于256的正整数\n");
    scanf("%d",&b.a2);                              //对共用体a2进行储存
    printf("第二次%d\t%d\n",b.a1,b.a2);             //对共用体a1,a2进行输出

}

第一次输入小于256的正整数储存在a1当中,之所以要小于256是因为一个字节最大储存小于256数,储存之后因为a1,a2共用一块内存所以a2输出也是255。第二次输入储存在了a2中,因为是一字节,所以a1,a2都能正确读取。

第一次输入大于等于256的数储存在a1当中,对于a1来说尽管内存溢出,因此只能读取共用体中一个字节中的数,但对于整个结构体来说没有发生溢出,因此a2能正常输出。第二次输入时储存在a2当中,对a1也是溢出因此a1照样不能正常输出。

共用体能够可以说是按位读取在共用体之中char可以读取8位,int读取16位。共用体的储存方式是“先进后出”的储存方式为栈储存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值