当前位置: 首页 > article >正文

C语言----共用体、枚举

目录

​编辑

共用体

1. 定义

2. 格式

注意:

枚举

1. 定义:

2. 格式:

3. 说明:

面试题:枚举和宏定义区别?


共用体

1. 定义

不同数据类型的数据可以使用共同的存储区域,这种数据构造类型称为共用体,简称共用,又称联合体。

2. 格式

union共用体名

{

成员列表;

};

注意:

1. 共用体成员在内存中使用共同的存储空间。由于共用体中各成员的数据长度往往不同,所以共用体变量在存储时总是按其成员中数据长度最大的成员占用内存空间。

2. 在共用体类型变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员就失去作用

思考:如何验证大小端?

方式一:
int  num = 0x12345678;
char ch = (char)num;
printf("%#x\n", ch); //如果输出的是0x78则是小端
方式二:
int num = 0x12345678;
char *p = (char *)#
printf("%#x\n", *p)); //如果输出的是0x78则是小端

练习:通过共用体验证大小端。

union endion
{
    int num;
    char ch;
};
int main(int argc, char const *argv[])
{
    union endion en;
    en.num = 0x12345678;
    printf("%#x\n", en.ch); //如果输出的是0x78则是小端
    return 0;
}

 

枚举

1. 定义:

枚举是C语言中的一种构造数据类型,它可以用于声明一组常数。当一个变量有几个固定的可能取值时,可以将这个变量定义为枚举类型。比如,你可以用一个枚举类型的变量来表示季节,因为季节只有4种可能的取值:春天、夏天、秋天、冬天。

一个星期只有七天,一年只有十二个月,一个班每周有六门课程等

2. 格式:

enum 枚举类型名

{

valueName1,

valueName2,

valueName3,

......

};

3. 说明:

1)枚举值默认从 0 开始,往后逐个加 1(递增)

enum week{ Mon, Tues, Wed, Thurs, Fri, Sat, Sun };

2)也可以给每个名字都指定一个值:

enum week{ Mon = 1, Tues = 2, Wed = 3, Thurs = 4, Fri = 5, Sat = 6, Sun = 7 };

3)简单的方法是只给第一个名字指定值:

enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun };

4)枚举是一种类型,通过它可以定义枚举变量

enum week a, b, c;

5)有了枚举变量,就可以把列表中的值赋给它

enum week a = Mon, b = Wed, c = Sat

6)枚举列表中的 Mon、Tues、Wed 这些标识符的作用范围是全局的,不能再定义与它们名字相同的变量。

7)Mon、Tues、Wed 等都是常量,不能对它们赋值,只能将它们的值赋给其他的变量。

笔试题:

面试题:枚举和宏定义区别?


http://www.kler.cn/a/467269.html

相关文章:

  • 使用 Optimum Habana 在 Intel Gaudi 上加速模型训练与推理
  • 《Opencv》基础操作详解(5)
  • 用公网服务代理到本地电脑笔记
  • 通过爬虫方式实现视频号助手发布视频
  • Jetpack Compose 学习笔记(四)—— CompositionLocal 与主题
  • 【软考网工笔记】计算机基础理论与安全——网络规划与设计
  • K210识别技术简介与基础使用方法
  • AcWing练习题:两点间的距离
  • 一文理解ssh,ssl协议以及应用
  • Java基于微信小程序的私家车位共享系统
  • [coredump] 生成管理
  • ELK日志平台搭建 (最新版)
  • 第2天:Web应用架构类别源码类别镜像容器建站模版编译封装前后端分离
  • 【小程序开发】- 小程序版本迭代指南(版本发布教程)
  • vue请求后端需要哪些问题
  • Kafka3.x KRaft 模式 (没有zookeeper) 常用命令
  • matlab 设计滤波器
  • Docker 中的SpringBoot项目的 SQL injection violation,comment not allow
  • Fabric链码部署测试
  • 个人健康信息系统|Java|SSM|VUE| 前后端分离
  • leetcode 732. 我的日程安排表 III
  • 【论文阅读-思维链的构造方法02】4.1.2 Automatic Construction-01
  • Chapter4.2:Normalizing activations with layer normalization
  • 关于数组的一些应用--------数组作函数的返回值(斐波那契数列数列的实现)
  • 2017年IMO几何预选题第7题
  • 使用Python的xml.etree.ElementTree模块解析和操作 XML 数据