结构: struct

结构是由程序猿自己设计的一种数据类型,用于描述一个事务的各项数据,由若干个不同的基础数据类型组成。设计结构:struct 结构体名{类型 成员名;...};定义结构体变量struct 结构体名 变量名;注意:定义结构变量时,struct不能省略定义并初始化结构变量 struct 结构体名 变量名 = {v1,v2,v3,...};                         根据成员的顺序进行初始化
也可以              struct 结构体名 变量名 = {.成员名= ,.成员名= ,.成员名= ,...}     只初始化某些成员
同类型的结构变量可以直接赋值访问成员:变量名.成员名;结构指针->成员名;    结构体变量作为形参时:由于结构变量的字节数都比较大,值传递效率比较低,因此都传递结构体变量的地址如果不需要修改结构变量的值,可以用const保护        typedef 重定义结构类型:typedef struct 结构名 结构名;之后就可以不用加struct关键字typedef struct 结构体名{...}结构体名;注意:结构体变量一般存储在堆内存计算结构体的字节数结构体成员的顺序会影响它的总字节数大小,在设计结构体时,如果顺序合理能够大大节约内存。内存对齐:假设第一个成员从零地址开始,存储每个成员的地址编号必须能被比它的字节数整除,如果不能会填充空字节内存补齐:结构体的总字节数,必须是它最大成员字节数的整数倍,如果不是则在末尾填充空字节注意:在Linux系统下计算结构体的对齐、补齐时,如果成员的字节数超过4,则按照4字节计算在windows系统,则按照实际情况计算#pragma pack(n) 设置对齐、补齐的最大字节数 n<=默认Linux:1、2、4...

联合: union

联合与结构的使用方法基本一致,与结构的区别是所有成员共用的一块内存,如果一个成员的值发生改变,其他成员的值也会随之发生改变
联合就是用少量的内存对应多个标识符,从而达到节约内存的目的,现在基本上不再使用。
常考的笔试题:
union Date
{char ch[10];int num;
}
12
注意:联合天然对齐,但计算联合的字节数时要考虑内存补齐如何判断系统是大端系统还是小端系统?假如十六进制整数0x01020304存储在以0x0A为起始的4字节内存中:小端:高位数据存储在高位地址中(0A:04 0B:03 0C:02 0D:01)大端:高位数据存储在低位地址中(0A:01 0B:02 0C:03 0D:04)个人计算机系统一般都是小端系统,UNIX服务器和网络设备都是大端,网络字节序也是大端模式的数据序列化和反序列化

枚举: enum

枚举就是一种数据类型,把所有可能出现的值列出来,可以取一个有意义的名字,除此之外,该类型的变量在等于其他值都是非法的(愿望)enum 枚举名{枚举常量1,枚举常量2,...};枚举就可以看作是一种类型受限的int类型,但是编译器为了效率并不会检查数据的值,所以在C语言中枚举可以当作int类型使用enum Dirextion{UP=183,DOWN,LEFT,RIGHT};
如果不给成员值,枚举常量的值默认从0开始,逐渐加1,如果某个设置了值,后面的在它的基础上加1为什么要用枚举:为无意义的数据取一个有意义的名字,提高代码的可读性和安全性(比宏常量安全)

学习笔记17-C语言-结构、联合、枚举相关推荐

  1. Go:【学习笔记】Go 语言结构

    1 Go 语言结构 在我们开始学习 Go 编程语言的基础构建模块前,让我们先来了解 Go 语言最简单程序的结构. Go Hello World 实例: Go 语言的基础组成有以下几个部分: 包声明 引 ...

  2. 【C/C++学习笔记】C语言结构体指针的输入输出

    简单构造一个结构体实例如下: struct student {char name[20];int score; }; 1.指向结构体变量 int main() {struct student st1; ...

  3. CST微波工作室学习笔记—17.CST和HFSS联合导入、导出模型+仿真

    使用HFSS和CST仿真,更能保证仿真的准确性 因为HFSS和CST的算法不一样,在HFSS上跑的仿真也许放到CST上跑可能就会不一样,但是也只是有些许差别,因此两者结合去跑去调才更能接近实际. 最近 ...

  4. 《Go语言圣经》学习笔记 第二章 程序结构

    Go语言圣经学习笔记 第二章 程序结构 目录 命名 声明 变量 赋值 类型 包和文件 作用域 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记,几乎是书上的内 ...

  5. 23 DesignPatterns学习笔记:C++语言实现 --- 1.2 AbstractFactory

    23 DesignPatterns学习笔记:C++语言实现 --- 1.2 AbstractFactory 2016-07-21 (www.cnblogs.com/icmzn) 模式理解   1. F ...

  6. 游戏开发学习笔记——lua脚本语言——安装、汉化与小测试(解决lua运行代码乱码问题)

    游戏开发学习笔记--lua脚本语言--安装.汉化与小测试 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: Lua 是一种轻量小巧的脚本语言,用 ...

  7. C语言结构联合位字段知识体系总结大学霸IT达人

    C语言结构联合位字段知识体系总结大学霸IT达人 C语言的基础类型中只能去定义单一类型的变量用于指代数据,但在现实生活中我们常常要处理的数据却会包含多种类型的数据. 例如,公司员工的信息管理,每个员工的 ...

  8. 23 DesignPatterns学习笔记:C++语言实现 --- 2.2 Adapter

    23 DesignPatterns学习笔记:C++语言实现 --- 2.2 Adapter 2016-07-22 (www.cnblogs.com/icmzn) 模式理解 1. Adapter 定义 ...

  9. [编译原理学习笔记2-2] 程序语言的语法描述

    [编译原理学习笔记2-2] 程序语言的语法描述 文章目录 [编译原理学习笔记2-2] 程序语言的语法描述 [2.3.1] 上下文无关文法 [2.3.2] 语法分析树与二义性 [2.3.3] 形式语言鸟 ...

  10. 【计算机网络学习笔记17】网络安全、加密技术、“Virtual Private Network”技术

    [计算机网络学习笔记17]网络安全.加密技术."Virtual Private Network"技术 一.网络安全概述 1.1 网络系统的安全目标: 1.可用性(Availabil ...

最新文章

  1. DayDayUp:《P2P行业最高端的玩法》源于网友网络收集
  2. 台达a2_台达自动化控制系统在IC烧录机上的应用
  3. boost::mpl模块实现empty_sequence相关的测试程序
  4. Java黑皮书课后题第1章:1.7(求π的近似值)编写程序,显示4*(1-1/3+1/5-1/7+1/9-1/11【+1/13】)
  5. 51 nod 1127最短的包含字符串(尺取法)
  6. 地图 插件 html 经纬度,如何往地图位置(经纬度)选择插件页面传递经纬度
  7. cmakefile 基础篇
  8. 流媒体服务器主板型号怎么看,关于服务器的详解
  9. 对称加密和非对称加密的理解
  10. libpython3.7m so静态库_libpython3.7m.dll
  11. 《构建之法》 第5.5 第6 第7章
  12. 斐讯k2修改dns服务器,斐讯k2路由器怎么重置?_斐讯k2恢复出厂设置教程-192路由网...
  13. 春节晚报 | 2月1日 星期二 | 快手推出首届“新春招工会”;罗永浩称“不做VR和元宇宙”;戴姆勒正式更名为梅赛德斯-奔驰...
  14. [摘录]第3章 终局谈判策略
  15. 「 C++ MFC 」“读取.txt文档实例”讲解
  16. 2种前端实现图片加水印的方式
  17. 【附源码】25个Python实战项目,超适合零基础练手,建议码住
  18. [WIKIOI 1316]文化之旅(队列深度优先搜索)
  19. 计算机专业英语(二)缩略词全称与解释
  20. kali linux 中字符映射错误,#、\、|、“ 不能输入

热门文章

  1. python中的列表和元组_python中列表和元组的区别
  2. python如何对一个属性或方法进行封装_python 类、对象、方法、属性
  3. reactor设计模式 1
  4. 在哪个Linux发行版上运行python,怎么在linux上运行python
  5. 河流水质指标预测与不确定性分析:机器学习模型的比较研究--文献阅读
  6. 【转】DICOM网络协议(一)概述
  7. 一步步编写操作系统 41 快表tlb 简介
  8. Qt Quick学习笔记
  9. REVERSE-PRACTICE-BUUCTF-16
  10. android 倒计时封装,react native中的聊天气泡及timer封装成的发送验证码倒计时