news 2026/4/17 16:18:44

C语言--自定义类型(联合和枚举)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言--自定义类型(联合和枚举)

1.联合体

a.联合体类型的声明

像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。 但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。所 以联合体也叫:共⽤体。 给联合体其中⼀个成员赋值,其他成员的值也跟着变化。

#include <stdio.h> //联合类型的声明 union Un { char c; int i; }; int main() { //联合变量的定义 union Un un = {0}; //计算连个变量的⼤⼩ printf("%d\n", sizeof(un)); return 0; }

输出为4;

b.联合体的特点

联合的成员是共⽤同⼀块内存空间的,这样⼀个联合变量的⼤⼩,⾄少是最⼤成员的⼤⼩(因为联合 ⾄少得有能⼒保存最⼤的那个成员)

c.联合体大小计算

联合的⼤⼩⾄少是最⼤成员的⼤⼩。

当最⼤成员⼤⼩不是最⼤对⻬数的整数倍的时候,就要对⻬到最⼤对⻬数的整数倍。

#include <stdio.h> union Un1 { char c[5]; int i; }; union Un2 { short c[7]; int i; }; int main() { //下⾯输出的结果是什么? printf("%d\n", sizeof(union Un1)); printf("%d\n", sizeof(union Un2)); return 0; }

输出为8和16;

d.判断大小端

int check_sys() { union { int i; char c; }un; un.i = 1; return un.c;//返回1是⼩端,返回0是⼤端 }

2.枚举

enum Day//星期 { Mon, Tues, Wed, Thur, Fri, Sat, Sun };

这些可能取值都是有值的,默认从0开始,依次递增1,当然在声明枚举类型的时候也可以赋初值

枚举的优点: 1. 增加代码的可读性和可维护性

2. 和#define定义的标识符⽐较枚举有类型检查,更加严谨。

3. 便于调试,预处理阶段会删除 #define 定义的符号

4. 使⽤⽅便,⼀次可以定义多个常量 5. 枚举常量是遵循作⽤域规则的,枚举声明在函数内,只能在函数内使⽤

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 3:21:37

Zoplicate插件:彻底告别Zotero文献库中的重复条目困扰

Zoplicate插件&#xff1a;彻底告别Zotero文献库中的重复条目困扰 【免费下载链接】zoplicate A plugin that does one thing only: Detect and manage duplicate items in Zotero. 项目地址: https://gitcode.com/gh_mirrors/zo/zoplicate 你是不是也曾经遇到过这样的情…

作者头像 李华
网站建设 2026/4/1 13:31:04

计算机深度学习毕设实战-基于python-CNN卷积神经网络的鱼类识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/3/27 4:20:46

FramePack智能视频创作:从静态图像到动态动画的完整工作流

FramePack智能视频创作&#xff1a;从静态图像到动态动画的完整工作流 【免费下载链接】FramePack 高效压缩打包视频帧的工具&#xff0c;优化存储与传输效率 项目地址: https://gitcode.com/gh_mirrors/fr/FramePack 想要将普通照片变成生动的视频内容吗&#xff1f;Fr…

作者头像 李华
网站建设 2026/4/16 7:59:48

空洞骑士模组管理器Scarab:5分钟快速上手指南

空洞骑士模组管理器Scarab&#xff1a;5分钟快速上手指南 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 还在为《空洞骑士》模组安装的繁琐流程而烦恼吗&#xff1f;Scarab模…

作者头像 李华
网站建设 2026/3/24 16:18:14

XGBoost极速安装全平台配置指南

XGBoost极速安装全平台配置指南 【免费下载链接】xgboost dmlc/xgboost: 是一个高效的的机器学习算法库&#xff0c;基于 C 开发&#xff0c;提供用于提升分类、回归、排序等任务的性能。 项目地址: https://gitcode.com/gh_mirrors/xg/xgboost 想要快速上手XGBoost机器…

作者头像 李华
网站建设 2026/4/18 2:04:25

ZSTD压缩算法简单测试

背景特性维度Zlib (DEFLATE)Zstd (Zstandard)核心算法LZ77 霍夫曼编码 (诞生于1990年代)现代LZ变体 有限状态熵/tANS (第一版于FaceBook公司发布2016)设计哲学寻求压缩率与速度的平衡&#xff0c;侧重于高压缩率。首要追求速度&#xff08;尤其是解压速度&#xff09;&#x…

作者头像 李华