C总结

2020/04/13

我的C整理

[TOC]

第一章 语法基础

第二章 语法基础

1.8 打印... 7

1.9 变量... 11

1.10 常量... 14

1.10.1 定义符号常量... 14

1.10.2 标识符... 15

1.10.3 字符串常量... 15

1.11 数据类型... 16

1.12 sizeof运算符... 17

1.13 signed和unsigned. 19

1.14 取值范围... 20

1.15 字符... 25

1.16 字符串... 28

1.17 运算符... 30

1.17.1 算术运算符... 31

1.17.2 目... 31

1.17.3 表达式... 32

1.17.4 运算符的优先级和结合性... 32

1.17.5 类型转换... 34

第2章 了不起的分支和循环... 37

2.1 分支结构... 37

2.1.1 关系运算符... 37

2.1.2 关系表达式... 38

2.1.3 逻辑运算符... 38

2.1.4 逻辑表达式... 39

2.1.5 短路求值... 40

2.1.6 if语句... 41

2.1.7 switch语句... 46

2.1.8 分支结构的嵌套... 48

2.1.9 悬挂else. 51

2.1.10 等于号带来的问题... 53

2.2 循环结构... 54

2.2.1 while语句... 54

2.2.2 do-while语句... 57

2.2.3 for语句... 58

2.2.4 灵活的for语句... 60

2.2.5 循环结构的嵌套... 63

2.2.6 break语句... 65

2.2.7 continue语句... 68

2.3 拾遗... 69

2.3.1 赋值运算符... 69

2.3.2 复合的赋值运算符... 70

2.3.3 自增自减运算符... 70

2.3.4 逗号运算符... 71

2.3.5 条件运算符... 72

2.3.6 goto语句... 73

2.3.7 注释... 74

第3章 数组... 76

3.1 一维数组... 77

3.1.1 定义一维数组... 77

3.1.2 访问一维数组... 77

3.1.3 循环与数组的关系... 78

3.1.4 数组的初始化... 79

3.1.5 可变长数组... 79

3.1.6 字符数组... 80

3.2 字符串处理函数... 81

3.2.1 获取字符串的长度... 81

3.2.2 复制字符串... 82

3.2.3 连接字符串... 84

3.2.4 比较字符串... 85

3.3 二维数组... 86

3.3.1 定义二维数组... 86

3.3.2 访问二维数组... 87

3.3.3 二维数组的初始化... 87

第4章 指针... 90

4.1 指针和指针变量... 91

4.1.1 定义指针变量... 92

4.1.2 取地址运算符和取值运算符... 92

4.1.3 避免访问未初始化的指针... 94

4.2 指针和数组... 94

4.2.1 数组的地址... 94

4.2.2 指向数组的指针... 96

4.2.3 指针的运算... 97

4.2.4 指针和数组的区别... 99

4.2.5 指针数组和数组指针... 100

4.2.6 指针和二维数组... 105

4.2.7 数组指针和二维数组... 108

4.3 void指针... 109

4.4 NULL指针... 112

4.5 指向指针的指针... 113

4.6 指针数组和指向指针的指针... 114

4.7 再讲数组指针和二维数组... 116

4.8 常量和指针... 118

4.9 指向常量的指针... 119

4.10 常量指针... 120

4.10.1 指向非常量的常量指针... 120

4.10.2 指向常量的常量指针... 121

4.10.3 指向“指向常量的常量指针”的指针... 122

第5章 函数... 124

视频讲解:271分钟(14个)钟

5.1 函数的定义和声明... 125

5.1.1 热身... 125

5.1.2 函数的定义... 126

5.1.3 函数的声明... 127

5.2 函数的参数和返回值... 128

5.2.1 形参和实参... 129

5.2.2 传值和传址... 130

5.2.3 传数组... 131

5.2.4 可变参数... 134

5.3 指针函数和函数指针... 135

5.3.1 指针函数... 135

5.3.2 误区:返回指向局部变量的指针... 136

5.3.3 函数指针... 137

5.3.4 函数指针作为参数... 138

5.3.5 函数指针作为返回值... 139

5.4 局部变量和全局变量... 140

5.4.1 局部变量... 140

5.4.2 全局变量... 142

5.4.3 不要大量使用全局变量... 145

5.5 作用域和链接属性... 146

5.5.1 代码块作用域... 146

5.5.2 文件作用域... 147

5.5.3 原型作用域... 148

5.5.4 函数作用域... 148

5.5.5 链接属性... 148

5.6 生存期和存储类型... 151

5.6.1 生存期... 151

5.6.2 存储类型... 152

5.7 递归... 156

5.7.1 什么是递归... 156

5.7.2 递归求阶乘... 159

5.7.3 汉诺塔... 162

5.7.4 分治法... 165

5.7.5 快速排序... 166

5.8 动态内存管理... 168

5.8.1 malloc. 168

5.8.2 free. 169

5.8.3 内存泄漏... 170

5.8.4 申请任意尺寸的内存空间... 172

5.8.5 calloc. 175

5.8.6 realloc. 175

5.9 C语言的内存布局... 177

5.9.1 代码段... 179

5.9.2 数据段... 180

5.9.3 BSS段... 180

5.9.4 堆... 182

5.9.5 栈... 182

5.10 高级宏定义... 184

5.10.1 不带参数的宏定义... 185

5.10.2 带参数的宏定义... 186

5.11 内联函数... 188

5.12 一些鲜为人知的技巧... 190

5.12.1 #和##. 190

5.12.2 可变参数... 191

第6章 结构体... 193

视频讲解:205分钟(12个)钟

6.1 结构体的声明和定义... 193

6.1.1 结构体的声明... 193

6.1.2 结构体的定义... 194

6.1.3 访问结构体成员... 195

6.1.4 初始化结构体... 197

6.1.5 对齐... 197

6.2 结构体嵌套... 199

6.3 结构体数组... 200

6.4 结构体指针... 201

6.5 传递结构体信息... 203

6.5.1 传递结构体变量... 203

6.5.2 传递指向结构体变量的指针... 206

6.6 动态申请结构体... 207

6.7 单链表... 212

6.7.1 在单链表中插入元素(头插法)... 214

6.7.2 在单链表中插入元素(尾插法)... 216

6.7.3 搜索单链表... 218

6.7.4 插入节点到指定位置... 219

6.7.5 在单链表中删除元素... 223

6.8 内存池... 225

6.9 typedef 239

6.9.1 给数据类型起别名... 239

6.9.2 结构体的好搭档... 242

6.9.3 进阶typedef 244

6.10 共用体... 249

6.10.1 共用体的声明... 249

6.10.2 共用体的定义... 252

6.10.3 初始化共用体... 252

6.11 枚举... 253

6.12 位域... 256

第7章 位操作... 260

视频讲解:26分钟(2个)钟

7.1 逻辑位运算符... 261

7.1.1 按位取反... 262

7.1.2 按位与... 262

7.1.3 按位异或... 262

7.1.4 按位或... 263

7.1.5 和赋值号结合... 263

7.2 移位运算符... 264

7.2.1 左移运算符... 264

7.2.2 右移运算符... 265

7.2.3 和赋值号结合... 265

7.2.4 一些未定义行为... 266

7.3 应用... 267

7.3.1 掩码... 267

7.3.2 打开位... 268

7.3.3 关闭位... 268

7.3.4 转置位... 269

第8章 文件操作... 270

视频讲解:108分钟(6个)钟

8.1 文件是什么... 270

8.2 打开和关闭文件... 271

8.3 顺序读写文件... 273

8.3.1 读写单个字符... 273

8.3.2 读写整个字符串... 274

8.3.3 格式化读写文件... 277

8.3.4 二进制读写文件... 278

8.4 随机读写文件... 281

8.5 标准流... 285

8.5.1 标准输入、标准输出和标准错误输出... 285

8.5.2 重定向... 286

8.5.3 错误处理... 287

8.6 I/O缓冲区... 291

Search

    Table of Contents