【共用体和枚举】

news2024/11/24 5:21:46

共用体

一种构造类型的数据结构

共用体和结构体类似,也是一种构造类型的数据结构。
既然是构造类型的,就需要先定义出类型,然后用类型定义变量。
定义共用体类型的方法和结构体非常相似,把struct 改成union 就可以了。
在进行某些算法的时候,需要使几种不同类型的变量存到同一段内存单元中,几个变量所使用空间相互重叠。这种几个不同的变量共同占用一段内存的结构,在C语言中,被称作“共用体”类型结构。
共用体所有成员占有同一段地址空间。
共用体的大小是其占内存长度最大的成员的大小。

共用体的特点

  1. 同一内存段可以用来存放几种不同类型的成员,但每一瞬时只有一种起作用。
  2. 共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员的值会被覆盖。
  3. 共用体变量的地址和它的各成员的地址都是同一地址。
  4. 共用体变量的初始化union data a={123}; 初始化共用体为第一个成员。
#include <stdio.h>

//定义一个共用体
union un{
	int a;
	int b;
	int c;
};

int main(int argc, char *argv[])
{
	//定义共用体变量
	union un myun;
	myun.a = 100;
	myun.b = 200;
	myun.c = 300;

	printf("a = %d, b = %d, c = %d\n", myun.a, myun.b, myun.c);

	return 0;
}

执行结果
在这里插入图片描述

枚举

将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。
枚举类型也是个构造类型的。

枚举类型的定义

enum 枚举类型名{
	枚举值列表;
};

在枚举值表中应列出所有可用值,也称为枚举元素。
枚举变量仅能取枚举值所列元素。

枚举变量的定义方法

enum 枚举类型名 枚举变量名;
  1. 枚举值是常量,不能在程序中用赋值语句再对它赋值。
    例如:sun=5; mon=2; sun=mon; 都是错误的。
  2. 枚举元素本身由系统定义了一个表示序号的数值。
    默认是从0开始顺序定义为0,1,2…
    如在week中,mon值为0,tue值为1, …,sun值为6。
  3. 可以改变枚举值的默认值:如
enum week //枚举类型
{
	mon=3,
	tue,
	wed,
	thu,
	fri=4,
	sat,
	sun
};

mon=3 tue=4,以此类推
fri=4 以此类推
注意:在定义枚举类型的时候枚举元素可以用等号给它赋值,用来代表元素从几开始编号
在程序中,不能再次对枚举元素赋值,因为枚举元素是常量。

#include <stdio.h>

//定义一个枚举类型
enum week
{
	mon=8, tue, wed, thu=2, fri, sat, sun
};

int main(int argc, char *argv[])
{
	//定义枚举类型的变量
enum week day = mon;
printf("day = %d\n", day);

day = fri;
printf("day = %d\n", day);

return 0;
}

执行结果
在这里插入图片描述

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

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

相关文章

美颜SDK的应用与优化:一次全面探究

在直播过程中&#xff0c;美颜技术可以帮助主播实现更好的视觉效果&#xff0c;从而吸引更多的关注和粉丝。因此&#xff0c;直播美颜SDK的应用和优化已经成为了直播行业中的一个重要研究方向。 一、直播美颜SDK的应用 1. 美颜滤镜 美颜滤镜是直播美颜SDK中最常用的一种技术…

【Mybatis】Mybatis处理一对多、多对多关系映射-四

唠嗑部分 上篇文章我们说了Mybatis中ORM映射的几种方式&#xff0c;相关文章&#xff1a; 【Mybatis】简单入门及工具类封装-一 【Mybatis】如何实现ORM映射-二 【Mybatis】Mybatis的动态SQL、缓存机制-三 这篇文章我们来说说Mybatis如何处理一对一、一对多、多对多的关系映射…

Linux下网络编程(2)——socket的函数们

accept()函数 服务器调用 listen()函数之后&#xff0c;就会进入到监听状态&#xff0c;等待客户端的连接请求&#xff0c;使用 accept()函数获取客户端的连接请求并建立连接。函数原型如下所示&#xff1a; int accept(int sockfd, struct sockaddr *addr, socklen_t *addrle…

RK3588光电载荷处理板研制进展

本来就是一个很小众的市场&#xff0c;但是偶尔也会有同行询问&#xff0c;这儿就简单汇报一下后期的进展 板子已经开发完成&#xff0c;并有幸得到了两个订单&#xff0c;虽然量不是很大&#xff0c;但是也很开心由于一段时间的努力和付出&#xff0c;将该设备应用在了国防事业…

【Linux】Linux文件目录结构

Linux文件目录结构 在 Linux 中&#xff0c;其文件目录结构是一颗类似于多叉树的结构&#xff0c;所有目录都在 / &#xff08;根目录&#xff09;下面&#xff0c;每个非叶节点代表一个目录&#xff0c;叶节点代表文件。 一般结构如下所示&#xff1a; usr :“Unix Software …

LitCTF 2023 - crypto复现

文章目录 Hex&#xff1f;Hex&#xff01;梦想是红色的原来你也玩原神factordbP_Leake的学问Euler* Where is P?The same common divisormd5babyLCG* easy_math* Virginia* Is this only base?你是我的关键词(Keyworld)隐晦的聊天记录* baby_xor收获与体会 Hex&#xff1f;He…

RabbitMQ入门 安装 SpringAMQP简单队列、工作队列、发布订阅(扇出模式,广播模式)、Direct模式(Roting模式)、Topic模式

一、RabbitMQ介绍 1. MQ介绍 1. 为什么要有MQ 同步调用与异步调用 程序里所有的通信&#xff0c;有两种形式&#xff1a; 同步通信&#xff1a;通信时必须得到结果才会执行下一步 异步通信&#xff1a;通信时不必等待结果&#xff0c;可以直接处理下一步 同步调用 解析&…

IPWorks EDI 2022 .NET Edition 22.0.8 Crack

IPWorks EDI基于用于安全 EDI 通信&#xff08;AS2、SFTP、OFTP、RosettaNet、MLLP 等&#xff09;的领先 EDI-INT 协议&#xff0c;IPWorks EDI 库包含促进安全 EDI 消息传递以及 EDI 映射、翻译和验证&#xff08;X12、 EDIFACT、HL7、TRADACOMS、VDA、XML 和 JSON&#xff0…

Mybatis基础操作

文章目录 一. Mybatis单表操作删除操作查询操作#{} 与 ${}的区别更新操作新增操作 二. Mybatis多表操作 一. Mybatis单表操作 删除操作 我们接着使用昨天的表和程序&#xff0c;我们来实现通过id删除数据&#xff1a; 我们这样就可以实现将id 1的数据进行删除了&#xff0c;…

FE_JS对象的理解

对象是JS中的引用数据类型&#xff0c;对象是一种复合数据类型&#xff0c;在对象中可以保存多个不同数据类型的属性。使用typeof检查一个对象时&#xff0c;会返回object。 1 对象创建模式 - Object构造函数模式 套路: 先创建空Object对象, 再动态添加属性/方法 适用场景: 起…

【LeetCode: 1335. 工作计划的最低难度 | 暴力递归=>记忆化搜索=>动态规划 】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

又一个开源便斩获 7k star 的新模型「GitHub 热点速览」

作者&#xff1a;HelloGitHub-小鱼干 Star 并不能代表什么&#xff0c;但是绝对能表示一个项目的受欢迎程度。就像刚开源一周就有 7k star 的新模型&#xff0c;输入文本 / 图像就能获得 3D 对象。除了这个新模型&#xff0c;本周还有一款新的 Web 3D 渲染引擎 Orillusion&…

MySQL学习---17、MySQL8其它新特性

1、MySQL新增特性 1.1 更简便的NoSQL支持 NoSQL泛指非关系型数据库和数据存储。随着互联网平台的规模飞速发展&#xff0c;传统的关系型数据库已经越来越不能瞒住需求。从5.6版本开始&#xff0c;MySQL就开始支持简单的NoSQL存储功能。MySQL 8对这一功能做了优化&#xff0c;…

阿里P8强烈推荐的可伸缩服务架构:框架与中间件笔记

随着企业业务量的增加&#xff0c;流量洪峰在不断挑战着业务系统的承载能力&#xff0c;设计高并发、可伸缩的系统已成为软件架构师的紧迫任务&#xff0c;而分布式、可伸缩的架构模式已成为抵御洪峰的有效方案之一。本书汇集了作者在多年核心系统开发中的架构及实践经验&#…

【算法】--- 几分钟带你走进排序算法大门(上)

文章目录 前言&#x1f31f;一、常见的排序算法&#xff1a;&#x1f31f;二、直接插入排序排序&#xff1a;&#x1f4d2;2.1 基本思想&#xff1a;&#x1f4d2;2.2 代码&#xff1a;&#x1f4d2;2.3 时间复杂度&#xff1a;O(N^2)&#x1f4d2;2.4 流程图详解&#xff1a; …

聚观早报 | Midjourney官方在QQ开启内测;富士康印度新工厂动工

今日要闻&#xff1a;Midjourney官方在QQ开启内测&#xff1b;富士康印度新工厂动工&#xff1b;闲鱼将开收软件服务费&#xff1b;专家建议五年内禁售燃油车&#xff1b;笑果文化已被立案调查 Midjourney官方在QQ开启内测 5 月 15 日&#xff0c;据 Midjourney AI 微信公众号…

Unity之OpenXR+XR Interaction Toolkit实现 手枪模型的拆卸和组装

前言 之前我们曾实现过PC端的模型的拆卸和组装&#xff0c;如果使用VR模式来实现物体的拆卸呢&#xff1f;如何使用双手手柄来控制物体&#xff0c;拆卸物体呢&#xff1f;今天我们就来实现一个VR小Demo&#xff0c;基于OpenXR &#xff0c;XR Interaction Toolkit插件来实现。…

程序员面试宝典

前言 编者: 大淘宝技术开发工程师 / 刘苏宏(淘苏) 淘苏(花名)目前是大淘宝技术的一名开发工程师。从国企 跳槽来到互联网&#xff0c;【职业规划】是他被问得最多&#xff0c;也思考得 最多的问题。 扫一扫&#xff0c;关注公众号【大淘宝技术】 了解更多大淘宝技术干货沉淀 …

技术架构演进之路-Docker【一】

技术架构演进之路 了解每种技术架构以及如何演进的&#xff0c;熟悉Docker在架构中的核心作用 八大架构演进 单机架构 当前服务由应用服务和数据库服务两个服务组成&#xff0c;应用服务由 用户模块、商品模块、交易模块三个模块组成&#xff0c;我们可以理解它为 淘宝。用户模…

互联网时代,自媒体宣发的概念、优势、策略及注意事项

自媒体宣发是指通过自己或者委托专业机构&#xff0c;运用自媒体平台传播宣传信息的一种方式。在互联网时代&#xff0c;自媒体已经成为了企业推广的一种重要手段。本文将为大家介绍自媒体宣发的概念、优势、策略及注意事项。#自媒体# 一、什么是自媒体宣发&#xff1f; 自媒体…