C语言详细笔记--构造数据类型(共用体)

news2024/11/13 9:11:38

目录

一、共用体类型声明

二、共用体变量的定义

三、共用体变量的初始化

四、共用体变量的引用


一、共用体类型声明

共用体类型是一种多个不同类型数据共享存储空间的构造类型,即共用体变量的所以成员占用同一个存储空间,一般声明格式如下:

union        共用体名{

        类型说明符 成员名1;

        类型说明符 成员名2;

        ...

        类型说明符 成员名N;

};

例如:

union utype{
    short int a;
    float b;
    char c[3];
};//声明了一个共用体类型utype

 说明:1.和结构体相似,共用体类型声明也不分配内存空间,只说明此类型数据的构造情况,要使用此类型数据还需要定义该类型的变量。

2.union是C语言的关键字,用于说明共用体类型。共用体名和成员名是用户自定义的标识符。

3.共用体中的成员可以是简单变量也可以是数组指针结构体和共用体,即共用体类型允许嵌套定义。

二、共用体变量的定义

和结构体一样,共用体变量的定义也有三种形式

1.先声明共用体类型再定义共用体变量

union utype{
    short int a;
    float b;
    char c[3];
};
union utype x;

2.再声明共用体类型的同时定义共用体变量

union utype{
    short int a;
    float b;
    char c[3];
}x;

3.不指定共用体名而直接定义共用体变量

union {
    short int a;
    float b;
    char c[3];
}x;

说明:1.系统为共用体变量中的所有成员分配以同一地址开始的存储空间,使用覆盖技术共享存储单元。

共享存储单元示意图

2.共用体变量所占空间大小取决于占存储空间最大的那个成员,而不是所有成员的存储空间之和,这点是与结构体变量的本质区别。 

三、共用体变量的初始化

共用体变量在定义时只能对第一个成员的值进行初始化。

union utype{
    short int a;
    float b;
    char c[3];
}x={10};//以上定义共用体变量x的同时给x.a赋值10

四、共用体变量的引用

共用体的引用方法与结构体完全相同,不能整体直接引用,只能引用共用体变量中的某个成员。

一般格式:共用体变量名.成员名

例如如下共用体:
union utype{
    short int a;
    float b;
    char c[3];
}x,y;
则下面均是合法的语句:
x.a=100;
x.b=5.5;
x.c[0]='m';
scanf("%f",&x.b);
printf("%d",x.a);

 说明:1.共用体的成员变量可参与其所属类型允许的任何操作。

2.两个类型相同的共用体变量可以进行赋值操作。例如:

x.a=100;
y=x;
printf("%d",y.a);
//输出的结构应该为100

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2109620.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LeetCode面试150】——205同构字符串

博客昵称:沈小农学编程 作者简介:一名在读硕士,**定期更新相关算法面试题**,欢迎关注小弟! PS:哈喽!各位CSDN的uu们,我是你的小弟沈小农,希望我的文章能帮助到你。欢迎大…

录屏没声音怎么办?3招解决,教您秒变声音大师

在录屏的过程中,突然发现录制的视频没有声音,这无疑会让人感到沮丧。声音作为视频的重要组成部分,一旦缺失,便会让整个作品失去生动性。然而,不必过于担心,因为录屏没声音的问题并非无法解决。 接下来&…

新手c语言讲解及题目分享(十七)--运算符与表达式专项练习

本文主要讲解c语言的基础部分,运算符与表达式的学习,在这一部分中,往往有许多细节的东西需要去记住。当各种运算符一起用时,就会存在优先级的关系,本文末尾有各种运算符的优先级顺序表。 参考书目和推荐学习书目&#…

开放式耳机哪个牌子好?长文传授6招秘籍,彻底远离坑货!

​大家好,作为一位专注于评测各类数码产品的博主,今天我特别推荐开放式耳机作为我们日常的首选。这种耳机以其独特的设计,避免了传统耳机长时间佩戴可能带来的不适和感染风险。开放式耳机佩戴简便且稳固,尤其适合热爱跑步和运动的…

解决TMP_InputField 在WebGL(抖音)上不能唤起虚拟键盘,不能使用手机内置输入法的问题

整整花费了一天时间测试和解决。试验了多个方法,花了不少美刀,最终才发现抖音这个官方文档,哭了: https://partner.open-douyin.com/docs/resource/zh-CN/mini-game/develop/guide/game-engine/rd-to-SCgame/open-capacity/capabi…

[Python] 从0到1实现一个简单的数字图像识别大模型

目录 前言介绍 神经网络 简单的神经网络 使用均方误差与正规方程实现神经网络 随机梯度下降与批量梯度下降实现神经网络 用更复杂的梯度下降实现一个神经网络 利用Sigmoid激活函数实现神经网络 使用 PyTorch 框架快速构建一个神经网络、 案例实战 前言介绍 大模型的本…

python-网页自动化(二)

获取元素属性 1. 获取属性 以百度首页的logo为例&#xff0c;获取logo相关属性 <img hidefocus"true" id"s_lg_img" class"index-logo-src" src"//www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png" width"270…

微服务-nacos

nacos-注册中心 启动 服务注册到nacos

【MIT 6.5840/6.824】In Search of an Understandable Consensus Algorithm 学习笔记

In Search of an Understandable Consensus Algorithm 1 Introduction2 Replicated state machines3 What’s wrong with Paxos?4 Designing for understandability5 The Raft consensus algorithm5.1 Raft basics5.2 Leader election5.3 Log replication5.4 Safety5.4.1 Elec…

知识付费最新版知识付费做的最好的平台,网创资源知识付费 知识付费网站搭建,搭建知识付费APP平台教学:在线教育系统源码。

目录 前言&#xff1a; 一、知识付费平台特点 二、知识付费平台功能 三、 知识付费小程序 前言&#xff1a; 知识付费小程序是一种在线学习平台&#xff0c;用户可以通过该小程序以一定的费用获取专业知识和技能。这些知识和技能可以来自行业专家、教育机构或个人创作者。知…

Docker 容器技术:简化 MySQL 主从复制部署与优化

文章目录 前言一、为什么基于Docker搭建&#xff1f;二、利用Docker搭建主从服务器2.1 配置Master&#xff08;主&#xff09;2.2 配置Slave&#xff08;从&#xff09;2.3 链接Master&#xff08;主&#xff09;和Slave&#xff08;从&#xff09;2.4 测试主从复制 三、常见问…

面试官:你有写过自定义指令吗?自定义指令的应用场景有哪些?

一、什么是指令 开始之前我们先学习一下指令系统这个词 指令系统是计算机硬件的语言系统&#xff0c;也叫机器语言&#xff0c;它是系统程序员看到的计算机的主要属性。因此指令系统表征了计算机的基本功能决定了机器所要求的能力 在vue中提供了一套为数据驱动视图更为方便的…

VMWARE VCENTER6.7 VCSA通过Web5480进行版本升级

VCENTER当前版本如下图 操作前先给VCENTER打一个快照&#xff0c;出问题可以立即回退 1、先下载VCSA镜像&#xff0c;并将VCSA镜像上传至DataStore中&#xff1b; 2、选中VCSA虚拟机&#xff0c;编辑配置 3、挂载新上传的VCSA镜像&#xff0c;一定要勾选“已连接”和“打开电源…

自定义string类

#include <iostream> #include <string> int main() { std::string str "Hello, World!"; // 使用 c_str() 将 std::string 转换为 C 风格字符串&#xff0c;并传递给 printf printf("The string is: %s\n", str.c_str()); // 尝试修改…

网络层 V(IPv6)【★★★★★★】

一、IPv6 的特点 IP 是互联网的核心协议。现在使用的 IP&#xff08;即 IPv4 ) 是在 20 世纪 70 年代末期设计的。互联网经过几十年的飞速发展&#xff0c;到 2011 年 2 月&#xff0c;IPv4 的地址已经耗尽&#xff0c; ISP 已经不能再申请到新的 IP 地址块了。我国在 2014 年…

全能与专精:探索未来AI模型的发展趋势与市场潜力

文章目录 每日一句正能量前言AI模型的全面评估和比较AI模型的专精化和可扩展性AI模型的合理使用和道德规范后记 每日一句正能量 一个人&#xff0c;如果没有经受过投资失败的痛楚&#xff0c;又怎么会看到绝望之后的海阔天空。很多时候&#xff0c;经历了人生中最艰难的事&…

告别繁琐切换,可道云teamOS让企业微信和钉钉无缝对接,爽到飞起

在当今快节奏的工作环境中&#xff0c;企业对于高效办公工具的需求日益增强。特别是企业微信和钉钉的普及&#xff0c;已成为许多企业日常沟通协作的基石。然而&#xff0c;传统企业网盘与这些平台的割裂&#xff0c;常常让工作流程变得繁琐。 幸运的是&#xff0c;teamOS的出…

vs2019编译opencv+contribute+gpu

1、提前准备 vs2019、opencv4.4.0、opencv-contribute4.4.0、CUDA Toolkit 11.8&#xff08;不能高于自己电脑的CUDA版本&#xff09;、CUDNN8.9.6 ps&#xff1a;先提前准备环境 1&#xff09;cmd中查看&#xff1a;nvidia-smi查看自己的显卡信息&#xff0c;不存在下述信息…

文本匹配任务(下)

文本匹配任务 1.文本匹配-深度学习1.1表示型1.1.1训练方式一1.1.2训练方式二&#xff08;Triplet Loss&#xff09; 1.2交互型1.3交互型和表示型对比 2.对比学习2.1图像中2.2NLP中 3.真实场景-海量向量查找3.1CD树3.1.1空间切割3.1.2Annoy 1.文本匹配-深度学习 简介&#xff1…

EasyExcel 文件导出 - 合并某些列值相同的行

文章目录 EasyExcel 文件导出 - 合并某些列值相同的行最终效果实现思路创建单元格合并的策略类使用 EasyExcel 文件导出 - 合并某些列值相同的行 在数据处理与文件导出的过程中&#xff0c;我们常常会遇到各种特定的需求。今天&#xff0c;我们就来探讨一下使用 EasyExcel 进行…