0 精神与契约
0.1 如何成为⼀个对企业有价值的⼈?
0.2 上战场的能⼒
0.3 战前准备:
0.4 教学思想和⽬标
1. 内存四区
1.1 数据类型本质分析
1.1.1 数据类型概念
1.1.2 数据类型的本质
1.1.3 数据类型的大小
1.1.4 数据类型的别名
1.1.5 数据类型的封装
1.1.6 数据类型的总结与拓展
1.2 变量的本质分析
1.2.1 变量的概念
1.2.2 变量的本质
1.3 程序的内存四区模型
1.3.1 栈区和堆区
1.3.2 全局区
1.4 函数的调⽤模型
1.5 函数调⽤变量传递分析
1.6 栈的⽣长⽅向和内存存放⽅向
2. 指针
2.1 指针强化
强化1:指针是一种数据类型
强化2:间接赋值是指针存在的最大意义
强化3:理解指针必须和内存四区结合
强化4:应用指针必须和函数调用相结合
2.2 经典语录
3. 字符串
3.1 字符串的基本操作
3.1.1 字符数组初始化方法
3.1.2 数组法和指针法操作字符串
3.3 字符串做函数参数
3.4 项目开发常用字符串应用模型
3.4.1 strstr中的while和do-while模型
3.4.2 两头堵模型
3.4.3 字符串反转模型
3.5 一级指针(char*)易错地放
3.6 谈谈const
3.7 强化练习
4. 二级指针
4.1 二级指针基本概念
4.2 二级指针输出特性
4.3 二级指针输⼊特性
4.4 多级指针
5. 多维的数组
5.1 数组的基本概念
5.1.1 概念
5.1.1 二维数组
5.1.2 数组名
5.2 数组类型
5.3 数组指针和指针数组
5.3.1 指针数组
5.3.2 数组指针
5.3.3 定义数组指针
5.4 多维数组名的本质
5.5 多维数组的参数退化
5.5.1 多维数组的线性存储特性
5.5.2 多维数组的3种形式参数
5.5.3 形参退化成指针的原因
6 宏
6.1 预处理步骤
6.2 宏定义
6.2.1 函数式定义
6.2.2 函数式宏定义 和 真正的函数调用有什么不同:
6.2.3 宏定义的陷阱
6.2.4 有关宏函数 do{…}while(0) 用法
6.2.5 #、##运算符和可变参数
7 位运算
7.1 按位与、或、异或、取反运算
7.2 位移运算
7.3 掩码
7.4 异或运算的⼀些特性
8. 结构体
8.1 结构体的类型和定义
8.2 结构体的赋值
8.3 结构体数组
8.4 结构体作为函数参数
8.5 结构体嵌套指针
8.6 有关浅拷贝深拷贝问题
8.7 结构体成员偏移量
8.8 有关结构体字节对齐
内存对齐的原因:
当系统以8个字节对齐时候
当系统以4个字节对齐的时候
当系统以1个字节字节对齐的时候
有关成员数组的字节对齐
有关不完整类型的字节对齐
9. 文件操作
9.1 文件操作步骤
9.2 有关文件的概念
9.3 C语言文件指针
9.4 文件操作API
9.5 标准的文件读写
9.6 文件操作案例
10. 链表
10.1 链表的相关概念
10.2 分类
10.3 基本操作
10.4 回调函数
11. 动态库
附录 (A)
Win32环境下动态链接库(DLL)编程原理
附录(B)
I、memwatch的使用说明
II、 Linux C 编程内存泄露检测工具
III、 Linux C 编程内存泄露检测工具