《C语言从新手到高手》PDF下载

  • 购买积分:20 如何计算积分?
  • 作  者:关淞元著
  • 出 版 社:
  • 出版年份:2020
  • ISBN:
  • 页数:0 页
图书介绍:

第一篇 新手篇 2

第1章 C语言概述 2

1.1C语言的前世今生 2

1.2C语言的优势与劣势 3

1.3C语言的当前标准 4

1.4C语言的编程机制 4

第2章 C语言的骨骼——基础数据类型 6

2.1常量与变量 6

2.1.1常量 6

2.1.2变量 8

2.2关键字和保留标识符 9

2.3整数类型 11

2.4浮点类型 11

2.5字符和字符串类型 13

2.6类型之间的转换 14

2.7程序注释 18

第3章 C语言的肉身——运算符 20

3.1算术运算符 20

3.2赋值运算符 21

3.3逻辑运算符 21

3.4移位运算符 22

3.5关系运算符 23

3.6增量运算符 24

3.7位运算符 25

3.8条件运算符 26

3.9逗号运算符 27

3.10运算符的优先级 28

第4章 C语言的血液——控制流 30

4.1顺序流 30

4.2条件分支流 31

4.3循环控制流 35

4.4输入输出流 38

4.4.1scanf/rintf函数 38

4.4.2getchar/putchar函数 40

4.4.3gets/puts函数 41

4.5语句嵌套 42

第5章 C语言的灵魂——函数 44

5.1函数定义 44

5.2函数声明 45

5.3函数参数 46

5.4函数调用 48

5.5函数递归 52

5.6可变参数列表 54

第6章 丫丫学步——构建第一个程序 56

6.1main函数 56

6.2程序风格 58

6.3第一个C程序 60

6.4编译执行 61

第二篇 进阶篇 64

第7章 成长的烦恼——数组和指针 64

7.1一维数组 64

7.2多维数组 65

7.3变长数组 66

7.4指针与地址 68

7.5指针数组 71

7.6指向函数的指针 73

7.7指向指针的指针 74

7.8指针和数组的区别 75

第8章 成长的积累——结构体、联合体及其他数据形式 77

8.1结构体基础知识 77

8.2结构的存储与对齐 79

8.3结构数组 84

8.4指向结构的指针 85

8.5结构体自引用 87

8.6联合体基础知识 88

8.7枚举类型 90

8.8位字段 93

8.9typedef简介 95

第9章 成长的惊喜——预处理器 98

9.1宏定义 98

9.2文件包含 102

9.3条件编译 103

第10章 成人礼——第一次构建多文件工程 107

10.1多源文件编译 107

10.2动态库和静态库 113

10.2.1静态库 114

10.2.2动态库 115

第三篇 实战篇 120

第11章 骨骼的发育——经典数据结构 120

11.1栈 120

11.2链表 123

11.3队列 126

11.4树 129

11.5堆 134

11.6散列表 137

11.7图 139

11.7.1邻接矩阵 141

11.7.2邻接表 142

11.7.3十字链表 142

11.7.4邻接多重表 143

11.8一个具体的例子——协议识别引擎 144

第12章 社会经验的积累——经典设计模式 151

12.1程序设计理念 151

12.2设计模式原则 152

12.3单件模式 154

12.4工厂模式 157

12.5抽象工厂模式 158

12.6创建者模式 161

12.7原型模式 162

12.8适配器模式 163

12.9装饰器模式 164

12.10代理模式 166

12.11外观模式 167

12.12桥接模式 169

12.13组合模式 170

12.14享元模式 172

12.15策略模式 174

12.16模板方法模式 175

12.17观察者模式 177

12.18迭代器模式 179

12.19责任链模式 180

12.20命令模式 182

12.21备忘录模式 183

12.22状态模式 185

12.23访问者模式 186

12.24中介者模式 188

12.25解释器模式 190

第13章 成长的挫折——再论程序调试 194

13.1断言 194

13.2万能的打印 197

13.3GDB调试浅谈 199

13.3.1基础命令 199

13.3.2进阶多线程命令 205

13.3.3调试core文件 206

13.4符号表与反汇编 210

13.5core文件的配置 212

第14章 适应社会——可移植性 214

14.1为什么需要可移植 214

14.2如何设计可移植的数据结构 215

14.3如何设计可移植的程序 217

第四篇 高手篇 220

第15章 找出自身的不足——性能调试 220

15.1程序Cycle的意义 220

15.2性能测试工具的使用 221

15.3变量的优化 224

15.4高性能函数 228

15.5嵌入式汇编 234

15.6编译优化 237

第16章 做事需未雨绸缪——Cache技术 241

16.1为什么要使用Cache 241

16.2Cache有多少级 242

16.3Cache Line的介绍 244

16.4与Cache结合的CPU指令 246

16.5Cache的淘汰策略 250

16.6让程序爱上Cache 252

第17章 找到亲近的人与事——NUMA技术 254

17.1NUMA简介 254

17.2NUMA存储管理 257

17.3NUMA相关工具 258

17.4NUMA读写实测 260

17.5让程序爱上NUMA 261

第18章 社会更新换代——大页技术 262

18.1大页简介 262

18.2Linux如何配置大页 263

18.3简述Hugetlbfs实现 266

18.4程序如何使用大页 269

第19章 自我修炼——多线程技术 271

19.1进程与线程的区别 271

19.2多线程编程 275

19.2.1线程的创建和结束 275

19.2.2线程同步 277

19.2.3线程互斥 281

19.2.4定义线程独有变量 283

19.3CPU亲和性 284

19.3.1RTC模式 287

19.3.2Pipeline模式 288

19.4多线程调试 289

附录A 术语表 291

附录B 操作符优先级表 293

附录C Linux信号表 298