C语言学习笔记-2021-03-22

一、结构体
- 为什么需要结构体
为了表示一些复杂的食物,而普通的基本类型无法满足实际要求 - 什么叫结构体
把一些基本类型数据组合在一起,形成一个新的复合数据类型 - 定义结构体有三种形式
如何使用结构体
1. 使用结构体中的每一个属性成员
2. 结构体变量的运算
- 结构体变量不能进行加减乘除运算
- 结构体变量可以相互赋值
举例-动态构造存放学生信息的结构体
该段程序重复性内容比较多,易读性比较差,可以通过函数改进
二、枚举
- 枚举的优点:
代码更安全,但是书写麻烦
三、补码
1. 原码
- 第一位0表示正,1表示负,后续位是所表示的数的绝对值的二进制位
- 简单易懂,但是运算复杂
- 的表示不唯一
2. 反码
- 反码运算不变,也没有应用
3. 移码
- 移码表示数值平移n位,n称为移码量
- 移码主要用于浮点数的阶码的存储
4. 补码
- 主要解决整数存储
- 十进制转二进制
- 正整数转二进制: 除以2取余,直至商为0,余数倒叙排序
- 负整数转二进制: 先求与该负数相对应的正整数的二进制代码,然后将所有位取反,末尾加1,不够位数时,左边补1
- 零的二进制: 全是0
- 8位二进制代码能表示的十进制数的范围是:-128~127
四、链表简介-帮助理解算法
算法:
- 通俗定义:解题的方法和步骤
- 狭义定义:对存储数据的操作,比如输出数组中的元素和输出链表中的元素,操作是不一样的,这种算法是依赖与存储结构的。
- 广义定义:泛型,无论数据如何存储,对该数据的操作都是一样的,例如,可以把输出数组元素中的p++看作链表中的p = p->pNext,这样看来,输出数组和链表的元素思路是一样的
- 我们至少可以通过两种结构来存储数据
数据存储方式
1. 数组
- 优点:存取速度快
- 缺点:需要一快连续的很大的内存,插入和删除元素的效率很低
2. 链表
- 优点:可以有效利用内存,插入删除元素的效率高
- 缺点:查找元素慢
- 术语:
- 首节点:存放第一个有效数据的节点
- 尾节点:存放最后一个有效数据的节点
- 头结点:和首节点数据类型一样,不存放有效数据,设置头结是为了方便对链表进行操作
- 头指针:存放头结点地址的指针变量