《C程序设计新思维 第2版》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)本·克莱蒙著;赵岩译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2018
  • ISBN:9787115460950
  • 页数:357 页
图书介绍:本书汇集编写高效、实用的C程序所需的工具和技巧,倡导读者重新认识并重视C语言,以更好地使用C语言。书中继承了上一版中关于如何实用shell、makefiles、漂亮的文本编辑器、调试器、内存管理等工具和技术,并附加了关于并发编程、虚拟表等特性的介绍,更好地帮助C语言使用者进行拾遗补漏。另外,书中提供了链表结构和XML解析器的现成的库,便于读者使用,同时对如何编写易读代码和函数接口进行了讲解。

第1部分 开发环境 3

第1章 准备方便的编译环境 3

1.1使用包管理工具 4

1.2在Windows下编译C程序 6

1.2.1Windows中的POSIX环境 7

1.2.2在POSIX环境中编译C语言 8

1.2.3在非POSIX环境中编译C语言 9

1.3链接函数库的方式 10

1.3.1一些我喜欢的选项 12

1.3.2路径 13

1.3.3运行时连接 16

1.4使用makefiile 16

1.4.1设定变量 17

1.4.2规则 20

1.5以源文件的方式使用库 24

1.6以源文件的方式使用库(即使你的系统管理员不想叫你这么做) 25

1.7通过here来编译C程序 27

1.7.1在命令行里包含头文件 27

1.7.2统一的头文件 28

1.7.3here文档 29

1.7.4从stdin中编译 30

第2章 调试、测试和文档 32

2.1使用调试器 32

2.1.1调试的侦探故事 34

2.1.2GDB变量 43

2.1.3打印结构 45

2.2利用Valgrind检查错误 49

2.3单元测试 51

2.3.1把程序用作库 54

2.3.2测试覆盖 55

2.4错误检查 56

2.4.1在错误中的用户的角色? 56

2.4.2用户工作的上下文环境 58

2.4.3如何返回错误信息 60

2.5编制文档 60

2.5.1Doxygen 61

2.5.2用CWEB解释代码 62

第3章 打包项目 65

3.1shell 66

3.1.1用shell命令的输出来替换命令 66

3.1.2用shell的循环来处理一组文件 68

3.1.3针对文件的测试 70

3.1.4fc 73

3.2makefiile还是shell脚本 75

3.3用Autotools打包代码 77

3.3.1一个Autotools的示例 79

3.3.2用makefiile.am来描述makefiile 82

3.3.3配置脚本 87

第4章 版本控制 92

4.1通过diff查看差异 93

4.2Git的对象 94

4.3树和它们的分支 99

4.3.1融合 100

4.3.2迁移 102

4.4远程版本库 103

第5章 协助开发 106

5.1动态装载 106

5.2流程 109

5.2.1为外来语言写程序 110

5.2.2包装函数 110

5.2.3跨越边境的代理数据结构 111

5.2.4链接 112

5.3与Python一起工作 113

5.3.1编译与连接 114

5.3.2Automake的条件子目录 114

5.3.3Autotools支持下的Distutils 116

第2部分 语言 121

第6章 玩转指针 121

6.1自动、静态和手工内存 121

6.2持久性的状态变量 125

6.3不使用malloc的指针 127

6.3.1结构被复制,数组创建别名 129

6.3.2malloc和内存操纵 132

6.3.3错误来源于星号 133

6.3.4你需要知道的各种指针运算 134

6.3.5将typedef作为一种教学工具 137

第7章 教科书不应该再过多介绍的C语言语法 139

7.1不需要明确地从main函数返回 139

7.2让声明的位置更灵活 140

7.3减少类型转换 143

7.4枚举和字符串 145

7.5标签、goto、switch和break 147

7.5.1探讨goto 147

7.5.2switch 150

7.6被摒弃的float 151

7.7比较无符号整型数 154

7.8安全的将字符串解析成数字 154

第8章 那些C语言教科书经常不讲解的语法 158

8.1营造健壮和繁盛的宏 158

8.1.1预处理器技巧 162

8.1.2测试宏 166

8.1.3避免头文件重复包含 168

8.2static和extern链接 170

8.3const关键字 173

8.3.1名词-形容词形式 174

8.3.2压力 175

8.3.3深度 176

8.3.4charconst**问题 177

第9章 简单的文本处理 180

9.1使用asprintf,使字符串的处理不再那么痛苦 180

9.1.1安全 183

9.1.2常量字符串 184

9.1.3用asprintf扩展字符串 185

9.1.4strtok的赞歌 187

9.2Unicode 192

9.2.1C代码的编码 194

9.2.2Unicode函数库 195

9.2.3示例代码 196

第10章 更好的结构 200

10.1复合常量 201

10.2可变参数宏 202

10.3安全终止的列表 204

10.4多列表 205

10.5Foreach 206

10.6函数的向量化 207

10.7指定的初始化器 209

10.8用零初始化数组和结构 211

10.9typedef可以化繁为简 212

10.10从函数返回多个数据项 214

10.11灵活的函数输入 218

10.11.1把函数声明为printf风格 219

10.11.2可选参数和命名参数 221

10.11.3使无聊的函数焕发光彩 223

10.12void指针以及它所指向的结构 229

10.12.1具有通用输入的函数 229

10.12.2通用结构 234

第11章 C语言面向对象编程 240

11.1扩展结构和字典 241

11.1.1实现一个字典 243

11.1.2C,更少的缝隙 247

11.2你结构中的函数 253

11.3作用域 261

11.4用操作符重载进行重载 264

11.5引用计数 268

11.5.1示例:一个子字符串对象 268

11.5.2一个基于代理的组构造模型 273

11.5.3结论 280

第12章 多线程 281

12.1环境 282

12.2OpenMP 283

12.2.1编译OpenMP、pthreads和C原子(atom) 286

12.2.2冲突 287

12.2.3映射缩减 288

12.2.4多任务 289

12.3线程本地 290

12.4共享资源 292

12.5pthread 299

12.6C原子 304

第13章 函数库 311

13.1GLib 311

13.2POSIX 312

13.2.1解析正则表达式 312

13.2.2为巨大的数据集合使用mmap 317

13.3GNU科学计算库 320

13.4SQLite 322

13.5libxml和cURL 325

附录AC101 329

后记 348

术语表 349