C语言学习笔记:共用体

这篇具有很好参考价值的文章主要介绍了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;
}

结构体与共用体

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

到了这里,关于C语言学习笔记:共用体的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Go语言学习笔记(三)

    教程:文档 - Go 编程语言 (studygolang.com) 在call-module-code需要注意,需要在hello目录下操作 这是一个在Go项目的模块管理中的命令。在Go的模块管理工具( go mod )中,这个命令用于修改模块依赖关系。 具体来说, go mod edit -replace example.com/greetings=../greetings  这个命令的作用是:

    2024年02月02日
    浏览(48)
  • go语言学习笔记1

    ​ GoLang是一种静态强类型、编译型、并发型,并具有 垃圾回收 功能的编程语言;它可以在不损失应用程序性能的情况下极大的降低代码的复杂性,还可以发挥多核处理器同步多工的优点,并可解决面向对象程序设计的麻烦,并帮助程序设计师处理琐碎但重要的内存管理问题

    2024年02月12日
    浏览(50)
  • Go语言学习笔记(二)

    以下是一些推荐的Go语言学习资源的链接: Go语言教程:https://golang.org/doc/ Go by Example:Go by Example Golang Tutorials:https://golangtutorials.com/ Go语言第一课(慕课网):PHP模糊查询技术案例视频教程-慕课网 Go语言进阶教程(实验楼):极客企业版 Go语言高级编程(GitBook):谁是凶手

    2024年01月20日
    浏览(52)
  • C语言学习笔记:数组

    ✨博文作者:烟雨孤舟 💖 喜欢的可以 点赞 收藏 关注哦~~ ✍️ 作者简介: 一个热爱大数据的学习者 ✍️ 笔记简介:作为大数据爱好者,以下是个人总结的学习笔记,如有错误,请多多指教! 目录 ​​​​​​​ 简介 数组声明 数组初始化 访问数组元素 多维数组 二维数组

    2024年02月09日
    浏览(55)
  • C语言学习笔记<1>

    1. EOF(End of File)是文件结束标志,用于表示文件已经读取完毕。在C语言中,可以通过判断是否读取到EOF来判断文件是否读取完毕。 以下是一个简单的C语言代码示例,用于读取一个文本文件并输出其内容: 2.单步执行 #include Windows.h 是C/C++中引入Windows API头文件的语句,它包

    2024年04月22日
    浏览(31)
  • lua脚本语言学习笔记

    Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。 因为我们使用redis的时候一般要写lua脚本,这篇文章就介绍一下lua脚本语言的基础用法。 window操作系统下可以使用SciTE来

    2024年02月16日
    浏览(50)
  • 【go语言学习笔记】04 Go 语言工程管理

    1. 单元测试 单元测试是保证代码质量的好方法,但单元测试也不是万能的,使用它可以降低 Bug 率,但也不要完全依赖。除了单元测试外,还可以辅以 Code Review、人工测试等手段更好地保证代码质量。 1.1 定义 顾名思义,单元测试强调的是对单元进行测试。在开发中,一个单

    2024年02月13日
    浏览(45)
  • C语言学习笔记 第一个C语言项目-07

    目录 1.新建一个文件夹  2.新建一个文件,后缀以.cpp结尾 3.编写代码 4.编译与执行代码 代码解析  总结  如下图所示,选择相应的文件夹,然后点击新建文件按钮,新建的文件一定要写后缀。 #includestdio.h int main(){     printf(\\\"hello world!n\\\");     return 0; } 在vscode中,首先保存文

    2024年02月16日
    浏览(46)
  • C语言学习笔记---C语言分支与循环语句

    前言: 什么是语句? C语言可分为以下五类: 表达式语句 函数调用语句 控制语句 复合语句 空语句 语句 :C语言中,由分号隔开的句子就是一条语句 如: C语言中用 非零 表示 真 ,用 零 表示 假 ,即: 逻辑真,逻辑假 三大语法结构 :顺序结构、分支(选择)结构、循环结构

    2024年02月16日
    浏览(51)
  • C语言学习笔记:输入&输出

    ✨博文作者:烟雨孤舟 💖 喜欢的可以 点赞 收藏 关注哦~~ ✍️ 作者简介: 一个热爱大数据的学习者 ✍️ 笔记简介:作为大数据爱好者,以下是个人总结的学习笔记,如有错误,请多多指教! 目录 scanf和printf gets和puts getchar和putchar printf是格式化的输出函数,scanf是C语言的输

    2024年02月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包