C语言之自定义类型联合和枚举

目录

前言 

一:联合体(共用体)union

1.联合体类型的声明

2.联合体的特点

3.联合体大小的计算

4.联合体判断机器的大小端 

二:枚举enum 

1.概念

2.枚举的优点 

3.枚举的使用


接下来的日子会顺顺利利,万事胜意,生活明朗-----------林辞忧

前言 

在C语言中有内置类型和自定义类型之别,如char int,long,double 等等都是内置类型,而还有由struct,union,enum定义的自定义类型,接下来将介绍联合体union,和枚举类型enum

一:联合体(共用体)union

1.联合体类型的声明

1.像结构体一样,联合体也是由一个或者多个成员组成的,这些成员可以是不同的类型,但是编译器只为最大的成员分配足够的内存空间

2.联合体的特点是所有成员共用一块内存空间

3.给联合体中的一个成员赋值,其他成员也随之发生变化

#include <stdio.h>
union u
{
   int n;
   char c;
};
int main()
{
  union u a;
  printf("%zd",sizeof(union u));
}

会发现联合体的大小结果为4 

2.联合体的特点

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

从此可以看出,联合体的成员变量是共用一块内存单元的,修改一个成员变量,其他成员变量也会被修改 

内存上的改变为

3.联合体大小的计算

1.联合的大小至少是最大成员的大小

2.当最大成员大小不是最大对齐数的整数倍时,就要对齐到最大对齐数的整数倍

4.联合体判断机器的大小端 

二:枚举enum 

1.概念

枚举就是一一列举,将可能的结果一一列举,如星期,颜色等

其中enum color,enumweek称为枚举类型,其中的成员称为枚举常量 

这些常量也是有值的,默认是从0开始,依次往下递增,但也可以赋初始值

enum color
{ 
  Blue,
  Red=5,
  Yellow=8
}

2.枚举的优点 

相对于枚举,我们还可以使用#define定义宏来实现枚举的功能,那么枚举相较宏的优点有

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

3.枚举的使用

enum color
{
   Red,
   Blue,
  Yellow
};
enum color cl=Red;//可以定义枚举变量并赋初始值

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-04-09 17:10:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-09 17:10:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-09 17:10:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-09 17:10:03       20 阅读

热门阅读

  1. 基于单片机的机械手臂控制系统设计

    2024-04-09 17:10:03       11 阅读
  2. 逻辑回归(Logistic Regression)详解

    2024-04-09 17:10:03       13 阅读
  3. 蓝桥杯刷题 深度优先搜索-[178]全球变暖(C++)

    2024-04-09 17:10:03       12 阅读
  4. 声明结构体变量时,是否一定要加struct关键字?

    2024-04-09 17:10:03       13 阅读
  5. 如何才能把握电商的私域流量呢?

    2024-04-09 17:10:03       19 阅读
  6. 大数据分层存储架构:ODS、DWD、DWM与DWS详解

    2024-04-09 17:10:03       12 阅读
  7. 算法刷题记录 Day39

    2024-04-09 17:10:03       15 阅读
  8. vue如何使用websocket去接收数据和发送数据

    2024-04-09 17:10:03       16 阅读
  9. Redis: 内存回收

    2024-04-09 17:10:03       15 阅读
  10. 【C/C++】BST树的后序遍历

    2024-04-09 17:10:03       14 阅读
  11. 设计模式:责任链模式

    2024-04-09 17:10:03       16 阅读