C语言进阶版第17课—自定义类型:联合和枚举

文章目录

  • [1. 联合体](#1. 联合体)
    • [1.1 联合体类型的声明](#1.1 联合体类型的声明)
    • [1.2 联合体的特点](#1.2 联合体的特点)
    • [1.3 联合体和结构体对比](#1.3 联合体和结构体对比)
    • [1.4 联合体的大小](#1.4 联合体的大小)
    • [1.5 联合体的应用](#1.5 联合体的应用)
    • [1.6 用联合体判断大小端](#1.6 用联合体判断大小端)
  • [2. 枚举](#2. 枚举)
    • [2.1 枚举类型](#2.1 枚举类型)
    • [2.2 枚举优点](#2.2 枚举优点)
    • [2.3 枚举类型的使用](#2.3 枚举类型的使用)

1. 联合体

1.1 联合体类型的声明

  • 与结构体相似,联合体的关键字是union,且联合体中也有多个成员

1.2 联合体的特点

  • 联合体与结构体不同的是,编译器只为联合体中最大的成员分配空间
  • 因此联合体的特点就是所有成员共用同一块内存空间,因此也叫共用体



1.3 联合体和结构体对比


1.4 联合体的大小

  • 联合体打大小最少是最大成员的大小
  • 当最大成员大小不是最大对齐数的整数倍时,就要对齐到最大对齐数的整数倍

1.5 联合体的应用

  假如搞一个活动,上线一个礼品兑换单,包含三种商品:图书、杯子、衬衫,其中图书包含:书名、作者、页数;杯子:设计;衬衫:设计、可选颜色、可选尺寸。除此之外,所有商品都还得有库存量、价格、商品类型。


1.6 用联合体判断大小端


2. 枚举

2.1 枚举类型

  • 枚举就是把可能得取值一一列举
  • 枚举里面的成员都是有值的,默认是从0开始
  • 枚举类型里面的成员一般是大写


2.2 枚举优点

  • 增加代码的可读性和可维护性
  • 和#define定义的标识符⽐较枚举有类型检查,更加严谨
  • 便于调试,预处理阶段会删除 #define 定义的符号
  • 使⽤⽅便,⼀次可以定义多个常量
  • 枚举常量是遵循作⽤域规则的,枚举声明在函数内,只能在函数内使⽤

2.3 枚举类型的使用


  特别注意的是:枚举的最后一个成员不需要加任何标点符号

相关推荐
夜雪一千14 分钟前
如何在MySQL中实现字段级加密
android·数据库·mysql
Wang's Blog15 分钟前
Java 项目部署之 Docker工具快速入门: 使用 Docker 镜像命令练习
java·docker
夜雪一千16 分钟前
MySQL 如何存储经纬度坐标:选型、建表、空间查询实战
android·mysql·adb
企业数字化笔记24 分钟前
多租户系统从哪里开始设计?租户身份、数据隔离、权限与套餐的整体方案
java·spring boot·后端·junit
tiger从容淡定是人生30 分钟前
从 Gemini 的任务示例出发:AI 能否从知识中推导工作流?
java·人工智能·aigc·知识图谱·创业创新·零知识证明
JMchen32 分钟前
集成第三方 C/C++ 库到 Android NDK 项目:OpenCV 与 FFmpeg 实战指南
android·opencv·cmake
Nebula_g35 分钟前
JavaSE高级:动态代理
java·开发语言·算法·javase
高级程序源42 分钟前
springboot校园外卖平台13676-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·tomcat·maven·课程设计
怦然丶心动1 小时前
用 Java 把干支历法算清楚:从节气切年到可读摘要
java·算法·vue·独立开发·spring boot / spring
青春逝如流水1 小时前
Java 线程与操作系统、硬件的关系:状态、映射与差异
java·开发语言·多线程·ai文章