0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言必备知识共用体

CHANBAEK 来源:小李的创客实验室 作者:初出茅庐的小李 2023-11-29 16:04 次阅读

C语言必备知识共用体

共用体是一种 构造数据类型 ,有时候也称之为联合体。它的用途:使几个不同类型的变量共占一段内存。

共用体举例

union 共用体名
{ 
	类型标识符    成员名;
	类型标识符    成员名;
};
union data    //共用体名字是data
 {   
 	int i;    //整型数据
    char ch;  //字符型数据
    float f;  //浮点型数据
 };

共用体特点

共用体变量任何时刻只有一个成员存在 共用体变量定义分配内存的长度=最长成员所占字节数

验证一下

#include < stdio.h > //printf scanf fputc

union data    //共用体名字是data
 {   
 	int i;    //整型数据
    char ch;  //字符型数据
    float f;  //浮点型数据
 };

union data dddd; 
int main(void)
{
 	printf("共用体内存是:%drn",sizeof(dddd));//实际打印的是float所占内存大小
	printf("float内存是:%drn",sizeof(float));//实际打印的是float所占内存大小 
	printf("int内存是%drn",sizeof(int));
	printf("char内存是:%drn",sizeof(char));
 	return0;
}

共用体变量里面内存的大小可以说跟float内存大小一样。也可以说是跟int大小一样,这里都是4个字节。

共用体变量的定义

//定义共用体的时候把变量写在共用体的后面 例如这里的a b都是共用体类型的变量名
union data 
{ 
  int i;
  char ch;
  float f;
}a,b;

//用共用体来定义 dddd就是共用体类型的变量名
union data dddd; 

//共用体指针定义
union data *p;

//共用体数组定义
union data d[3];

//省略类型名字的 共用体变量 a b c
union
{ 
   int i;
   char ch;
   float f;
 } a,b,c;

测试代码如下

union
{ 
   int i;
   char ch;
   float f;
} a,b,c;

int main(void)
{
 	printf("共用体内存是:%drn",sizeof(a));//实际打印的是float所占内存大小
	printf("float内存是:%drn",sizeof(float));//实际打印的是float所占内存大小 
	printf("int内存是%drn",sizeof(int));
	printf("char内存是:%drn",sizeof(char));
 	return0;
}

共用体变量的引用方式3种

  • 共用体变量名.成员名
  • 共用体指针名->成员名
  • (*共用体指针名).成员名

跟结构体非常相似 变量访问用点、指针访问用箭头、星号可以把指针的内容取出。

dddd.i = 1;
        printf("dddd.i  = %drn",dddd.i);

	dddd.ch = 'm';
	printf("dddd.ch = %crn",dddd.ch);

	dddd.f = 1.3;
	printf("dddd.f  = %frn",dddd.f);

注意:

  • 同一个内存段可以用来存放几种不同类型的成员,但在每 一瞬时只能存放其中一种,而不是同时存放几种。
  • 共用体变量中起作用的成员是最后一次存放的成员 只保留了1.3

图片
在这里插入图片描述

  • 共用体变量和它的各成员的地址都是同一地址

图片至此,共用体的知识点简单说完了。

附上代码:

#include < stdio.h > //printf scanf fputc

union data    //共用体名字是data
 {   
 	int i;    //整型数据
    char ch;  //字符型数据
    float f;  //浮点型数据
 };
union data dddd; 

union data *p; 
int main(void)
{
    dddd.i = 1;
    dddd.ch = 'm';
    dddd.f = 1.3;
    printf("dddd.i  = %drn",dddd.i);
    printf("dddd.ch = %crn",dddd.ch);
    printf("dddd.f  = %frn",dddd.f);
    printf("i地址  = %prn",&dddd.i);
    printf("ch地址 = %prn",&dddd.ch);
    printf("f地址  = %prn",&dddd.f);
 	return0;
}

!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内存
    +关注

    关注

    8

    文章

    3025

    浏览量

    74047
  • C语言
    +关注

    关注

    180

    文章

    7604

    浏览量

    136826
  • 代码
    +关注

    关注

    30

    文章

    4788

    浏览量

    68612
收藏 人收藏

    评论

    相关推荐

    C语言基础知识科普

    C语言是单片机开发中的必备基础知识,本文列举了部分STM32学习中比较常见的一些C语言基础
    发表于 07-21 10:58 1903次阅读

    C语言-枚举、共用

    前面章节学习了结构,结构里可以按顺序存放相同或者不同的数据类型,每个成员都有它对应的存储空间。 而共用和结构一样也可以按顺序存放相
    的头像 发表于 09-09 11:31 982次阅读

    C51单片机及C语言知识必备秘籍

      电子发烧友网讯:应广大电子发烧友网读者要求,本电子书《C51单片机及C语言知识必备秘籍》为《单片机关键
    发表于 07-30 13:59 9848次阅读

    C51单片机及C语言知识必备秘籍

    C51单片机及C语言知识必备秘籍
    发表于 09-28 23:18

    C51单片机及C语言知识必备秘籍

    C51单片机及C语言知识必备秘籍
    发表于 12-20 22:50

    c51单片机必备c语言知识

    c51单片机必备c语言知识
    发表于 01-05 22:51

    什么是C语言共用

    ;volatile unsigned char G: 1;volatile unsigned char DP: 1; } B; volatile unsigned char W;} ;这是个什么共用?怎么称呼的?这是共用
    发表于 10-25 02:32

    结构共用的区别

    转载重点:共用的所有成员占用同一段内存,修改一个成员会影响其余所有成员。图形分析影响过程通过前面的讲解,我们知道结构(Struct)是一种构造类型或复杂类型,它可以包含多个类型不同的成员。在
    发表于 07-20 06:57

    C语言的结构共用在单片机中的妙用是什么

    【分享】C语言的结构共用在单片机中的妙用C语言
    发表于 11-30 06:13

    怎样去使用C语言的结构共用

    C语言的结构共用分别有何特点呢?怎样去使用C语言
    发表于 01-17 07:51

    联合体/共用的使用方法

    大家好,我是ZhengN。本次给分享联合体的一些知识。联合体/共用的使用 C语言中,联合体/共用
    发表于 02-28 10:05

    C语言程序设计教程之结构共用的详细资料说明

    本文档详细介绍的是C语言程序设计教程之结构共用的详细资料说明主要内容包括了:1 结构,2
    发表于 03-01 17:20 11次下载
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>程序设计教程之结构<b class='flag-5'>体</b>与<b class='flag-5'>共用</b><b class='flag-5'>体</b>的详细资料说明

    C语言的结构共用在单片机中的妙用

    【分享】C语言的结构共用在单片机中的妙用C语言
    发表于 11-20 19:36 20次下载
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>的结构<b class='flag-5'>体</b>和<b class='flag-5'>共用</b><b class='flag-5'>体</b>在单片机中的妙用

    什么是C语言共用类型

    结构变量所占内存长度是各成员占的内存长度之和。每个成员分别占有其自己的内存单元。而共用变量所占的内存长度等于最长的成员的长度。
    的头像 发表于 03-24 15:13 779次阅读

    C语言编程必备知识合集

    电子发烧友网站提供《C语言编程必备知识合集.zip》资料免费下载
    发表于 11-21 09:34 0次下载
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>编程<b class='flag-5'>必备</b><b class='flag-5'>知识</b>合集