C语言学习笔记:共用体

news/2024/7/24 9:06:49 标签: 学习, 笔记, c语言

✨博文作者:烟雨孤舟
💖 喜欢的可以 点赞 收藏 关注哦~~

✍️ 作者简介: 一个热爱大数据的学习

✍️ 笔记简介:作为大数据爱好者,以下是个人总结的学习笔记,如有错误,请多多指教!

目录

简介

共用体定义

访问共用体成员

结构体与共用体


简介

共用体是一种特殊的数据类型,允许在相同的内存位置存储不同的数据类型。可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。

共用体定义

为了定义共用体,必须使用 union 语句,方式与定义结构体类似

在共用体中,各成员共享一段内存空间,一个共用体变量的长度等于各成员中最长的长度。
共用体变量可被赋予任一成员值,但每次只能赋一种值
共用体类型的定义和共用体变量的说明一个共用体类型必须经过定义后才能把变量说明为给共用体类型。
共用体类型是一种特殊的构造类型,他的最大特点就是所有成员共享同一存储单元

共用体类型一般形式:
union 共用体类型名
{
    类型名 成员1;
    类型名 成员2
}共用体变量;
union Data{
   int i;
   float f;
   char  str[20];
} data;

//Data 的共用体类型,有三个成员 i、f 和 strstr[20]

共用体变量的定义:
1.先定义共用体类型,再定义共用体变量
union Data
{   int i;
   float f;
   char  str;
};
union Data a,b,c;
2.定义共用体类型的同时定义共用体变量
union Data
{   int i;
   float f;
   char  str;
}a,b,c;
3.定义共用体类型时省略共用体名,同时定义共用体变量
union D
{   int i;
   float f;
   char  str;
} a,b,c;

访问共用体成员

为了访问共用体的成员,我们使用成员访问运算符(.)。成员访问运算符是共用体变量名称和我们要访问的共用体成员之间的一个句号

在定义共用体变量就可引用该共用体变量的某个成员
结构体变量名.成员名; a.i;
注意:一个共用体变量不是同时存放多个成员的值,只能存放其中的一个值。
共用体一般不单独使用,可以作为结构体的成员,结构体也可以作为共用体的成员

例如:
#include <stdio.h>
#include <string.h>
union Data
{
   int i;
   float f;
   char  str[20];
};
int main( ){
   union Data data;        
   data.i = 10;
   data.f = 220.5;
   strcpy( data.str, "C Programming");
   printf( "data.i : %d\n", data.i);
   printf( "data.f : %f\n", data.f);
   printf( "data.str : %s\n", data.str);
   return 0;
}

结构体与共用体

结构体变量所占内存长度是其中最大字段大小的整数倍。
共用体变量所占的内存长度等于最长的成员变量的长度。
共用体作用:
节省内存,有两个很长的数据结构,不会同时使用,比如一个表示老师,一个表示学生,如果要统计教师和学生的情况用结构体的话就有点浪费了!用共用体的话,只占用最长的那个数据结构所占用的空间,就足够了!


http://www.niftyadmin.cn/n/453263.html

相关文章

Java:不支持发行版本5

错误 Java&#xff1a;不支持发行版本5 详细错误 同学在github上找到一个微服务项目&#xff08;基于maven进行构建&#xff09;&#xff0c;进行二开&#xff0c;导入项目运行控制台报错 Java&#xff1a;不支持发行版本5&#xff0c;笔者修改项目结构&#xff08; F i l e…

IDEA合并分支和.gitignore可能遇到的问题

将本地的 v1 分支合并到 master 分支上 1.确认你在 master 分支上&#xff0c;在命令行执行以下命令&#xff0c;这将切换到 master 分支。 git checkout master 2.拉取最新代码 在合并分支之前&#xff0c;请确保您的代码库是最新的。在命令行执行以下命令&#xff0c;这将从…

Cortext-M3系统:NVIC与中断控制(4)

1、NVIC概述 向量中断控制器&#xff0c;简称NVIC&#xff0c;是Cortex-M3不可分离的一部分&#xff0c;它与CM3内核的逻辑紧密耦合。NVIC的寄存器以存储器映射的方式来访问&#xff0c;除了包含控制寄存器和中断处理的控制逻辑之外&#xff0c;NVIC还包含了MPU、SysTick定时器…

软考A计划-系统集成项目管理工程师-信息化知识(五)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

JS自定义打印网页内容(详细全面)

浏览器自身打印 (不在赘述,重点是讲述打印自定义的几种方法与常见的问题) 使用 window.print() 调起浏览器自带的打印预览弹框打印默认会打印 body 里面所有内容const handlePrintPdf = () => {window.print(); }方式一:通过 iframe 打印部分区域 动态创建一个不可见的 i…

众安科技:一套成熟的it自动化运维系统应该具备哪些特点

随着企业信息化程度的提升和IT环境的复杂化&#xff0c;IT运维工作变得越来越重要。为了提高效率、降低风险&#xff0c;许多企业开始关注和采用自动化运维系统。然而&#xff0c;一套成熟的IT自动化运维系统应该具备哪些特点呢&#xff1f;本文将探讨这一话题&#xff0c;并介…

Mysql 常用SQL语句-2023

Mysql 常用SQL语句-2023 一 、创建数据库 / 表 命令二、修改表的命令三、对数据的操作&#xff08;增删改查&#xff0c;排序&#xff0c;分组&#xff09;四、多表联合查询五、DCL 数据控制语言六、DTL 数据事务语言七&#xff0c;时间操作 一 、创建数据库 / 表 命令 show d…

6月20日,每日信息差

1、中国联通&#xff1a;截至5月“大联接”用户达9.18亿户&#xff0c;5G套餐用户累计达2.3亿户&#xff0c;物联网终端连接累计达4.33亿户&#xff1b;“创新应用”方面&#xff0c;公司5G行业虚拟专网服务客户数5325个 2、谷歌据悉在印度寻找供应商组装Pixel智能手机 3、中…