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

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.lryc.cn/news/515376.html

相关文章:

  • 26.Java Lock 接口(synchronized 关键字回顾、可重入锁快速入门、Lock 对比 synchronized)
  • 机器学习 学习知识点
  • GESP真题 | 2024年12月1级-编程题4《美丽数字》及答案(C++版)
  • java并发之AQS
  • 4 种修复 IPhone 备份输入密码解锁的方法
  • 选课(贪心)
  • 【深度学习】Java DL4J基于 LSTM 构建新能源预测模型
  • 【linux基础I/O(1)】文件描述符的本质重定向的本质
  • 微服务架构下的慢请求排查与优化策略
  • C++ 中 Unicode 字符串的宽度
  • 人工智能在SEO中的应用与关键词优化策略
  • spring mvc源码学习笔记之四
  • ruckus R510升级到Unleashe后不能访问
  • 【游戏设计原理】47 - 超游戏思维
  • FastAPI vs Flask 专业对比与选择
  • 【信息系统项目管理师】【综合知识】【备考知识点】【思维导图】第十一章 项目成本管理
  • xdoj-字符串-556,为什么字符不能被正常读入
  • 计算机网络——期末复习(5)期末考试样例1(含答案)
  • Docker安装oracle数据库【最新版】
  • 基于STM32的智能门锁系统设计
  • 【踩坑指南:2025年最新】如何在Linux(Ubuntu)启动第一个Scala Hello World程序(Scala3)
  • SAP系统中的标准价、移动平均价是什么?有何区别?物料分类账的优点
  • 9.类的定义与使用
  • 【网络安全 | 漏洞挖掘】JS Review + GraphQL滥用实现管理面板访问
  • 前端如何判断多个请求完毕
  • atrust异常导致ERR_NETWORK_CHANGED
  • 【网络安全 | 漏洞挖掘】绕过电子邮件确认实现预账户接管
  • python3GUI--智慧交通监控与管理系统 By:PyQt5
  • Java重要面试名词整理(十八):Sentinel
  • 一文大白话讲清楚TCP连接的三次握手和断开连接的四次挥手的原理