当前位置: 首页 > news >正文

初出茅庐的小李博客之C语言必备知识共用体

C语言必备知识共用体

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

共用体举例

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

共用体特点

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

验证一下

#include <stdio.h> //printf scanf fputcunion data    //共用体名字是data{   int i;    //整型数据char ch;  //字符型数据float f;  //浮点型数据};union data dddd; 
int main(void)
{printf("共用体内存是:%d\r\n",sizeof(dddd));//实际打印的是float所占内存大小printf("float内存是:%d\r\n",sizeof(float));//实际打印的是float所占内存大小 printf("int内存是%d\r\n",sizeof(int));printf("char内存是:%d\r\n",sizeof(char));return 0;
}

共用体变量里面内存的大小可以说跟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("共用体内存是:%d\r\n",sizeof(a));//实际打印的是float所占内存大小printf("float内存是:%d\r\n",sizeof(float));//实际打印的是float所占内存大小 printf("int内存是%d\r\n",sizeof(int));printf("char内存是:%d\r\n",sizeof(char));return 0;
}

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

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

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

dddd.i = 1;printf("dddd.i  = %d\r\n",dddd.i);dddd.ch = 'm';printf("dddd.ch = %c\r\n",dddd.ch);dddd.f = 1.3;printf("dddd.f  = %f\r\n",dddd.f);

注意:

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

在这里插入图片描述

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

在这里插入图片描述
至此,共用体的知识点简单说完了。

附上代码:

#include <stdio.h> //printf scanf fputcunion 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  = %d\r\n",dddd.i);printf("dddd.ch = %c\r\n",dddd.ch);printf("dddd.f  = %f\r\n",dddd.f);printf("i地址  = %p\r\n",&dddd.i);printf("ch地址 = %p\r\n",&dddd.ch);printf("f地址  = %p\r\n",&dddd.f);return 0;
}

相关文章:

初出茅庐的小李博客之C语言必备知识共用体

C语言必备知识共用体 共用体是一种构造数据类型&#xff0c;有时候也称之为联合体。 它的用途&#xff1a; 使几个不同类型的变量共占一段内存。 共用体举例 union 共用体名 { 类型标识符 成员名;类型标识符 成员名; };union data //共用体名字是data{ int i; …...

vue3+elementPlus之侧边菜单栏功能

选择默认的颜色&#xff0c;将代码拷贝至<el-aside>模块中 稍微把不需要的修改一下。 <template><div class"common-layout"><el-container><el-header class"homeHeader"><div class"headerTitle">Devops…...

阿里云服务器安装mysql数据库之后无法远程连接

目录 一、mysql安装完成后直接远程远程连接阿里云服务器上的MySQL会报下述错误&#xff1a; 1、修改root用户的host 为% 登录MySQL 后 执行 2、修改完成后执行 3、退出mysql 重启mysql服务 exit; 4、修改完成后需要设置阿里云的安全规则。 二、dbaver测试链…...

如何把自己银行卡里的钱转账充值到自己支付宝上?

原文来源&#xff1a;https://www.caochai.com/article-4524.html 支付宝余额是支付宝核心功能之一&#xff0c;主要用于网购支付、线下支付、转账等场景。用户可以将银行卡、余额宝等资金转入或转出至支付宝余额&#xff0c;实现快速转账和支付。 如何把自己银行卡里的钱转账…...

Flink Flink中的分流

一、什么是分流 所谓“分流”&#xff0c;就是将一条数据流拆分成完全独立的两条、甚至多条流。也就是基于一个DataStream&#xff0c;定义一些筛选条件&#xff0c;将符合条件的数据拣选出来放到对应的流里。 二、基于filter算子的简单实现分流 其实根据条件筛选数据的需求…...

传输层协议[精选]

网络: 跨主机通信. 互联网通信: 两点之间的通信路径有无数条. 集线器: 把一根网线差出来两根,但是同一时刻只能有一根线跑.交换机: 组建局域网.路由器: 本质就是将两个局域网连接起来 交换机和路由器之间的区别越来越模糊. 调制解调器: 使用电话线上网的时候,需要将电话线的模…...

LeetCode算法题解|474. 一和零

474. 一和零 题目链接&#xff1a;474. 一和零 题目描述 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集的长度&#xff0c;该子集中 最多 有 m 个 0 和 n 个 1 。 如果 x 的所有元素也是 y 的元素&#xff0c;集合 x 是集合 y 的 子…...

一种太阳能风能市电互补路灯方案介绍

太阳能市电互补路灯是一种环保、节能的照明设施&#xff0c;它利用太阳能进行发电并实现照明。这种路灯在白天吸收阳光并将其转化为电能&#xff0c;到了晚上则利用储存的电能为LED灯提供电力&#xff0c;实现照明功能。下面叁仟智慧将详细介绍太阳能市电互补路灯灯的工作原理和…...

世微 dc-dc降压恒流 LED汽车大灯 单灯 14V5A 68W车灯驱动方案 AP5191

产品描述 AP5191是一款PWM工作模式,高效率、外围简单、外置功率MOS管&#xff0c;适用于4.5-150V输入的高精度降压LED恒流驱动芯片。输出最大功率150W&#xff0c;最大电流6A。AP5191可实现线性调光和PWM调光&#xff0c;线性调光脚有效电压范围0.55-2.6V.AP5191 工作频率可以…...

基于时隙的多重冗余流指纹模型

文章信息 论文题目&#xff1a;基于时隙的多重冗余流指纹模型 期刊&#xff08;会议&#xff09;&#xff1a;网络与信息安全学报 时间&#xff1a;2023 级别&#xff1a;CCF C 概述 为确保内生网络流量安全可信&#xff0c;本文在研究流水印及其扩展的流指纹机制的基础上&a…...

Visual Studio 2019 C# System.BadImageFormatException 解决方法

文章目录 1.DLL文件缺失或不匹配原因解决方法 2.系统环境变量Path下内容过多原因解决方法 3.位数错误原因解决方法 分析几种可能因素 1.DLL文件缺失或不匹配 原因 检查对应Debug路径下的DLL文件是否有缺失 解决方法 将对应的DLL文件放到Debug文件夹里面&#xff0c;检查冗余…...

深度学习之基于YoloV5车辆和行人目标检测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介YOLOv5 简介YOLOv5 特点 车辆和行人目标检测系统 二、功能三、系统四. 总结 一项目简介 # 深度学习之基于 YOLOv5 车辆和行人目标检测系统介绍 深度学习在…...

Django框架之中间件

目录 一、引入 二、Django中间件介绍 【1】什么是Django中间件 【2】Django中间件的作用 【3】示例 三、Django请求生命周期流程图 四、Django中间件是Django的门户 五、Django中间件详解 六、中间件必须要掌握的两个方法 (1) process_request (2) process_respon…...

BTC 复兴:Ordinals 带来创新活力,BitVM 与 BitStream 相继问世

除了备受瞩目的 ETF&#xff0c;今年 Bitcoin 生态迎来全新的发展活力和机遇。Ordinals 协议的横空出世&#xff0c;以此为基础诞生的 BRC20 协议给整个比特币生态带去了一波新的能量&#xff0c;迎来铭文热度高涨。而诸如 BitVM、BitStream 等新技术甫一问世&#xff0c;便引发…...

STM32 CAN协议讲解以及代码

STM32 CAN 文章目录 STM32 CAN前言一、CAN外设1.主控制寄存器CAN_MCR2.位时序寄存器CAN_BTR3.CAN的发送邮箱4.CAN的接收FIFO5.验收筛选器 二、代码配置1.初始化2.发送数据3.接收数据4.main.c 前言 前面学习了CAN的一些理论知识&#xff0c;他在我们的STM32里面是怎么用的呢 前…...

京东数据分析(京东大数据):2023年10月京东手机行业品牌销售排行榜

鲸参谋监测的京东平台10月份手机市场销售数据已出炉&#xff01; 根据鲸参谋平台的数据显示&#xff0c;今年10月份&#xff0c;京东平台手机行业的销量约340万&#xff0c;环比增长约11%&#xff0c;同比则下滑约2%&#xff1b;销售额为108亿&#xff0c;环比增长约17%&#x…...

计算机毕业设计 基于Hadoop的物品租赁系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…...

pop链反序列化 [MRCTF2020]Ezpop1

打开题目 网站源码为 Welcome to index.php <?php //flag is in flag.php //WTF IS THIS? //Learn From https://ctf.ieki.xyz/library/php.html#%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E9%AD%94%E6%9C%AF%E6%96%B9%E6%B3%95 //And Crack It! class Modifier {protected …...

yolov5从英伟达平台移植到华为昇腾开发板上的思路

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 为什么大多数人学不会人工智能编程&#xff1f;>>> 最近需要将yolov5代码从英伟达平台移植到华为昇腾开发板上。搜了一些代码和资料&#xff0c;大致明白了二者的差别。 1.二者使用的模型文件不一样 yolov…...

网络运维与网络安全 学习笔记2023.11.25

网络运维与网络安全 学习笔记 第二十六天 今日目标 ACL原理与类型、基本ACL配置、高级ACL配置 高级ACL之ICMP、高级ACL之telnet ACL原理与类型 项目背景 为了企业的业务安全&#xff0c;要求不同部门对服务器有不同的权限 PC1不能访问Server PC2允许访问Server 允许其他所…...

从房价预测到用户分群:CART回归树与分类树在真实业务场景下的应用避坑指南

从房价预测到用户分群&#xff1a;CART回归树与分类树实战避坑指南 在金融风控和电商推荐系统中&#xff0c;我们经常需要预测用户的贷款违约概率或对客户进行价值分层。去年为某银行优化信用卡审批系统时&#xff0c;我曾用CART分类树将用户逾期率预测准确率提升了23%&#xf…...

智能体记忆设计模式:从短期缓存到长期人格的演进之路

智能体记忆设计模式:从短期缓存到长期人格的演进之路 引言 当我们谈论智能体时,我们在谈论什么? 2024年,AI领域最炙手可热的概念无疑是智能体(Agent)。从OpenAI的GPT-4o Assistant、Anthropic的Claude 3 Opus Projects,到Meta的Llama 3 Agents,再到开源社区里如雨后…...

别再只用yum了!CentOS 7上源码编译安装Tinyproxy 1.11.1,开启账号密码验证(附一键脚本)

从源码到安全代理&#xff1a;CentOS 7深度部署Tinyproxy 1.11.1全指南 在Linux生态中&#xff0c;yum安装的便捷性往往掩盖了源码编译的价值。当我们需要特定功能、定制化路径或最新版本时&#xff0c;从源码构建才是真正的高手之道。今天要探讨的Tinyproxy 1.11.1正是一个典型…...

从手机信号到芯片时钟:聊聊“扩频”技术的前世今生与硬件设计中的巧妙应用

从手机信号到芯片时钟&#xff1a;聊聊“扩频”技术的前世今生与硬件设计中的巧妙应用 想象一下音乐会散场时的人流&#xff1a;如果所有人都挤在同一个出口&#xff0c;必然造成拥堵甚至踩踏风险。聪明的场馆管理者会采取"分时段放行"或"多通道疏导"策略—…...

品牌年轻化背后,是一场“决策效率”的竞争

品牌年轻化&#xff0c;这四个字&#xff0c;现在几乎成了所有消费品牌老板的“共识焦虑”。但我先把一句话放在前面——大多数企业做的&#xff0c;不是品牌年轻化&#xff0c;而是品牌“表面年轻化”。你换了logo&#xff0c;换了包装&#xff0c;拍了点短视频&#xff0c;请…...

渐进式Web应用:离线缓存与后台同步的实现

渐进式Web应用&#xff1a;离线缓存与后台同步的实现 在移动互联网时代&#xff0c;用户对Web应用的体验要求越来越高&#xff0c;而渐进式Web应用&#xff08;PWA&#xff09;凭借其接近原生应用的性能和可靠性成为热门技术。其中&#xff0c;离线缓存与后台同步是PWA的两大核…...

别再手动下载distribute了!用pip install setuptools一键修复Python 2.7的pkg_resources缺失问题

告别手动下载distribute&#xff01;用pip install setuptools轻松解决Python 2.7的pkg_resources缺失问题 如果你还在使用Python 2.7进行开发或维护旧系统&#xff0c;很可能遇到过这个令人头疼的错误&#xff1a;ImportError: No module named pkg_resources。这个错误通常出…...

别再死记硬背VGG结构了!手把手教你用PyTorch复现VGG16/19(附代码与权重加载)

从零构建VGG16&#xff1a;PyTorch实战指南与设计哲学解析 在计算机视觉领域&#xff0c;VGG网络以其优雅的对称结构和卓越的性能表现&#xff0c;成为深度学习发展史上的里程碑。不同于简单记忆网络层数&#xff0c;真正理解VGG的精髓在于亲手实现其架构设计。本文将带您用PyT…...

别再用成品USB麦克风了!手把手教你用STM32F4和CubeMX打造专属录音声卡(附完整代码)

从零打造专属录音声卡&#xff1a;STM32F4与CubeMX实战指南 市面上大多数USB麦克风都是封闭的黑箱系统&#xff0c;无法满足硬件创客和嵌入式开发者对底层控制的渴望。本文将带你用STM32F4开发板和CubeMX工具&#xff0c;打造一款完全可定制的USB录音设备&#xff0c;突破成品声…...

HFSS实战:手把手教你仿真一个2.1GHz圆极化微带天线阵列(从单贴片到2x2阵)

HFSS实战&#xff1a;从单贴片到2x2阵列的圆极化微带天线仿真全流程 在射频工程领域&#xff0c;微带天线因其结构紧凑、成本低廉和易于集成的特点&#xff0c;成为无线通信系统的热门选择。特别是圆极化微带天线&#xff0c;能够有效减少极化失配带来的信号损失&#xff0c;在…...