15.C基础_共用体、枚举

2024-08-24 20:44
文章标签 基础 15 枚举 共用

本文主要是介绍15.C基础_共用体、枚举,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

共用体

1、概述与定义

什么是共用体:

共用体又称联合体,是不同数据类型的数据可以使用共同的存储区域。因此同一时间下,只能访问一个共用体的成员,因为它们的空间同一个地方的。

共用体的定义:

共用体的定义与使用与结构体的定义完全一致,唯一的区别是内存大小分配不同

union 共用体名{共用体成员
};

共用体变量的定义:

共用体变量的定义与结构体变量的第一完全一致。

//方法1:正常定义结构体变量
union 共用体名 共用体变量名;//方法2:定义共用体时,定义共用体变量
union 共用体名{共用体成员列表
}变量名1,变量名2; //直接在这里写变量名,变量名之间用,隔开               

2、初始化共用体

一般情况初始化:

共用体中虽然成员有多个,但因为它们的空间一样,所以实际赋值是只需要赋值一个

//1.定义共用体变量时初始化
union 共用体名 共用体变量名 = {一个值};//2.定义共用体时,定义共用体变量的初始化
struct 共用体名{共用体成员列表
}变量名 = {一个值};

初始化共用体中的结构体:

这时的初始化类似结构体变量的部分初始化,指定某一个变量,然后初始化。但同样的,只能初始化一个值。

union 共用体名 共用体变量名 = {.成员 = 值
};

3、访问共用体变量

共用体变量的访问方法与结构体变量的访问方法完全一致。

访问共用体变量时,应该遵循赋值谁,就访问谁。尽管共用体成员的空间是一样的,强行访问也不会报错,但是逻辑上会有一些问题。

4、共用体大小

计算原则:

  • 要能够容纳的下最大的数据
  • 要是数据类型大小的整数倍,不是则需要补齐

举例:现在有一个共用体定义如下,计算它的大小。

union uTest{double a;int b;char c;char d[9];
}

 在这个共用体中,所需空间最大的是d,空间为9字节。占用空间最大的类型是double,空间为8字节。因为9不能被8整除,所以补齐到16。因此该共用体的大小为16。

枚举

1、定义

枚举类型的定义与结构体一样。成员需要用" , "隔开

enum 枚举名{枚举成员列表
};

在定义时,新的枚举的成员名与其他枚举的成员名有重复

2、枚举的赋值与打印值

赋值枚举变量只能赋值枚举中列出的值。

枚举变量的打印值并不是枚举出来的值,而是从0开始的整型(在未进行初始化情况下)

如果枚举定义时,进行了指定值,那么实际值将会从指定值开始。

在赋值时,枚举的成员的赋值可以一样。  

3、枚举大小

枚举的值实际上是一个整型,所以不论枚举成员有多少个,枚举大小都是4字节

这篇关于15.C基础_共用体、枚举的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1103558

相关文章

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

Java 枚举的常用技巧汇总

《Java枚举的常用技巧汇总》在Java中,枚举类型是一种特殊的数据类型,允许定义一组固定的常量,默认情况下,toString方法返回枚举常量的名称,本文提供了一个完整的代码示例,展示了如何在Jav... 目录一、枚举的基本概念1. 什么是枚举?2. 基本枚举示例3. 枚举的优势二、枚举的高级用法1. 枚举

Rust中的Option枚举快速入门教程

《Rust中的Option枚举快速入门教程》Rust中的Option枚举用于表示可能不存在的值,提供了多种方法来处理这些值,避免了空指针异常,文章介绍了Option的定义、常见方法、使用场景以及注意事... 目录引言Option介绍Option的常见方法Option使用场景场景一:函数返回可能不存在的值场景

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

hdu 2489 (dfs枚举 + prim)

题意: 对于一棵顶点和边都有权值的树,使用下面的等式来计算Ratio 给定一个n 个顶点的完全图及它所有顶点和边的权值,找到一个该图含有m 个顶点的子图,并且让这个子图的Ratio 值在所有m 个顶点的树中最小。 解析: 因为数据量不大,先用dfs枚举搭配出m个子节点,算出点和,然后套个prim算出边和,每次比较大小即可。 dfs没有写好,A的老泪纵横。 错在把index在d

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

hdu 6198 dfs枚举找规律+矩阵乘法

number number number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description We define a sequence  F : ⋅   F0=0,F1=1 ; ⋅   Fn=Fn