作者:
Ben Klemens
出版社: 人民邮电出版社
副标题: C语言编程的现代思维指南 现代IT环境的C语言编程实战宝典
原作名: 21st Century C
译者: 徐波
出版年: 2015-5
页数: 266
定价: 49
装帧: 平装
丛书: O'Reilly动物系列(中译本)
ISBN: 9787115386281
出版社: 人民邮电出版社
副标题: C语言编程的现代思维指南 现代IT环境的C语言编程实战宝典
原作名: 21st Century C
译者: 徐波
出版年: 2015-5
页数: 266
定价: 49
装帧: 平装
丛书: O'Reilly动物系列(中译本)
ISBN: 9787115386281
内容简介 · · · · · ·
C语言已经有40年的历史了。经过长时间的发展和普及,C语言应用场景有了很大的变化,的一些旧观念应该被淡化或者不再被推荐。
《C程序设计新思维》展现了传统C教科书所不具有的最新的相关技术。全书分为开发环境和语言两个部分,分别从编译、调试、测试、打包、版本控制等角度,以及指针、语法、文本、结构、面向对象编程、库等主题,对C程序设计的核心知识进行查缺补漏和反思。本书鼓励读者放弃那些对大型机才有意义的旧习惯,拿起新的工具来使用这门与时俱进的简洁语言。
《C程序设计新思维》适合有一定基础的C程序员或C语言学习者阅读,也适合想要较为深入地理解C语言特性的读者参考。
C程序设计新思维的创作者
· · · · · ·
-
徐波 译者
作者简介 · · · · · ·
Ben Klemens为布鲁金斯学会、世界银行、美国国家精神健康中心和美国政府编写统计分析和计算机模型。他与布鲁金斯学会和自由软件基金会一起合作,确保程序员保留其作品使用权的权利。
目录 · · · · · ·
第一部分 开发环境
第1章 准备方便的编译环境 3
1.1 使用包管理器 4
1.2 在Windows下编译C 6
1.2.1 Windows中的POSIX环境 7
1.2.2 在POSIX下编译C 8
· · · · · · (更多)
第1章 准备方便的编译环境 3
1.1 使用包管理器 4
1.2 在Windows下编译C 6
1.2.1 Windows中的POSIX环境 7
1.2.2 在POSIX下编译C 8
· · · · · · (更多)
第一部分 开发环境
第1章 准备方便的编译环境 3
1.1 使用包管理器 4
1.2 在Windows下编译C 6
1.2.1 Windows中的POSIX环境 7
1.2.2 在POSIX下编译C 8
1.2.3 不在POSIX环境中编译C 9
1.3 库的路径 10
1.3.1 一些我喜欢的选项 11
1.3.2 路径 13
1.3.3 运行时连接 15
1.4 使用Makefile 16
1.4.1 设定变量 17
1.4.2 规则 19
1.5 以源文件利用库 23
1.6 以源文件利用库(即使你的系统管理员不想叫你这么做) 24
1.7 通过本地文档来编译C程序 26
1.7.1 在命令行里包含头文件 26
1.7.2 统一的头文件 27
1.7.3 嵌入文档 28
1.7.4 从stdin中编译 29
第2章 调试、测试和文档 31
2.1 使用调试器 31
2.1.1 GDB变量 35
2.1.2 打印结构 36
2.2 利用Valgrind检查错误 40
2.3 单元测试 41
2.3.1 把程序用作库 44
2.3.2 测试覆盖 45
2.4 编制文档 46
2.4.1 Doxygen 46
2.4.2 用CWEB解释代码 48
2.5 错误检查 50
2.5.1 在错误中的用户参与是什么 50
2.5.2 用户工作的上下文环境 52
2.5.3 如何返回错误信息 53
第3章 打包项目 55
3.1 Shell 56
3.1.1 用shell命令的输出来替换命令 56
3.1.2 用shell的循环来处理一组文件 58
3.1.3 针对文件的测试 60
3.1.4 fc 62
3.2 makefile还是shell脚本 64
3.3 用Autotools打包代码 67
3.3.1 一个Autotools的示例 68
3.3.2 用makefile.am来描述makefile 71
3.3.3 配置脚本 76
第4章 版本控制 80
4.1 通过diff查看差异 81
4.2 Git的对象 82
4.3 树和它们的枝 86
4.3.1 融合 88
4.3.2 迁移 89
4.4 远程版本库 90
第5章 和谐共处 93
5.1 过程 93
5.1.1 作为外来语言写程序 93
5.1.2 包装函数 94
5.1.3 跨越边境的代理数据结构 94
5.1.4 连接 96
5.2 与Python一起工作 96
5.2.1 编译与连接 98
5.2.2 Automake的条件子目录 98
5.2.3 Autotools支持下的Distutils 100
第二部分 语言
第6章 玩转指针 106
6.1 自动、静态和手工内存 106
6.2 持久性的状态变量 109
6.3 不使用malloc的指针 110
6.3.1 结构被复制,数组创建别名 111
6.3.2 malloc和内存操纵 114
6.3.3 错误来源于星号 115
6.3.4 你需要知道的各种指针运算 116
第7章 可以忽略的C语法 121
7.1 不需要明确地从main函数返回 122
7.2 让声明流动 122
在运行时设置数组的长度 124
7.3 减少类型转换 125
7.4 枚举和字符串 126
7.5 标签、goto、switch和break 128
7.5.1 考虑goto 129
7.5.2 switch 130
7.6 被摒弃的float 132
第8章 障碍和机遇 136
8.1 营造健壮和繁盛的宏 136
预处理器技巧 140
8.2 static和extern链接 143
只在头文件中声明外部链接的元素 145
8.3 const关键字 147
8.3.1 名词-形容词形式 148
8.3.2 压力 149
8.3.3 深度 150
8.3.4 char const **问题 150
第9章 文本 154
9.1 使用asprintf,使字符串的处理不再痛苦 154
9.1.1 安全 156
9.1.2 常量字符串 156
9.1.3 用asprintf扩展字符串 158
9.1.4 strtok的赞歌 159
9.2 Unicode 163
9.2.1 C代码的编码 165
9.2.2 Unicode函数库 167
9.2.3 示例代码 168
第10章 更好的结构 171
10.1 复合文字 172
通过复合文字进行初始化 173
10.2 可变参数宏 173
10.3 安全终止的列表 175
10.4 Foreach 176
10.5 函数的向量化 176
10.6 指定的初始化值 178
10.7 用零初始化数组和结构 180
10.8 typedef可以化繁为简 181
10.9 从函数返回多个数据项 183
10.10 灵活的函数输入 187
10.10.1 把函数声明为printf风格 187
10.10.2 可选参数和命名参数 189
10.10.3 使无聊的函数焕发光彩 191
10.11 void指针以及它所指向的结构 197
10.11.1 具有通用输入的函数 197
10.11.2 通用结构 201
第11章 C语言的面向对象编程 206
11.1 你所不明白的(以及为什么你不能不明白) 207
11.1.1 作用域 207
11.1.2 用操作符重载进行重载 210
11.2 扩展结构和字典 214
11.2.1 扩展一个结构 215
11.2.2 实现一个字典 219
11.2.3 基于指向对象的指针编码 223
11.3 你结构中的函数 224
11.4 引用计数 228
11.4.1 示例:一个子字符串对象 229
11.4.2 一个基于代理的组构造模型 233
第12章 库 240
12.1 GLib 240
12.2 POSIX 241
12.2.1 为巨大的数据集合使用mmap 241
12.2.2 用Pthreads轻松实现线程 243
12.3 GNU科学计算库 251
12.4 SQLite 254
12.5 libxml和cURL 256
后记 261
术语表 262
· · · · · · (收起)
第1章 准备方便的编译环境 3
1.1 使用包管理器 4
1.2 在Windows下编译C 6
1.2.1 Windows中的POSIX环境 7
1.2.2 在POSIX下编译C 8
1.2.3 不在POSIX环境中编译C 9
1.3 库的路径 10
1.3.1 一些我喜欢的选项 11
1.3.2 路径 13
1.3.3 运行时连接 15
1.4 使用Makefile 16
1.4.1 设定变量 17
1.4.2 规则 19
1.5 以源文件利用库 23
1.6 以源文件利用库(即使你的系统管理员不想叫你这么做) 24
1.7 通过本地文档来编译C程序 26
1.7.1 在命令行里包含头文件 26
1.7.2 统一的头文件 27
1.7.3 嵌入文档 28
1.7.4 从stdin中编译 29
第2章 调试、测试和文档 31
2.1 使用调试器 31
2.1.1 GDB变量 35
2.1.2 打印结构 36
2.2 利用Valgrind检查错误 40
2.3 单元测试 41
2.3.1 把程序用作库 44
2.3.2 测试覆盖 45
2.4 编制文档 46
2.4.1 Doxygen 46
2.4.2 用CWEB解释代码 48
2.5 错误检查 50
2.5.1 在错误中的用户参与是什么 50
2.5.2 用户工作的上下文环境 52
2.5.3 如何返回错误信息 53
第3章 打包项目 55
3.1 Shell 56
3.1.1 用shell命令的输出来替换命令 56
3.1.2 用shell的循环来处理一组文件 58
3.1.3 针对文件的测试 60
3.1.4 fc 62
3.2 makefile还是shell脚本 64
3.3 用Autotools打包代码 67
3.3.1 一个Autotools的示例 68
3.3.2 用makefile.am来描述makefile 71
3.3.3 配置脚本 76
第4章 版本控制 80
4.1 通过diff查看差异 81
4.2 Git的对象 82
4.3 树和它们的枝 86
4.3.1 融合 88
4.3.2 迁移 89
4.4 远程版本库 90
第5章 和谐共处 93
5.1 过程 93
5.1.1 作为外来语言写程序 93
5.1.2 包装函数 94
5.1.3 跨越边境的代理数据结构 94
5.1.4 连接 96
5.2 与Python一起工作 96
5.2.1 编译与连接 98
5.2.2 Automake的条件子目录 98
5.2.3 Autotools支持下的Distutils 100
第二部分 语言
第6章 玩转指针 106
6.1 自动、静态和手工内存 106
6.2 持久性的状态变量 109
6.3 不使用malloc的指针 110
6.3.1 结构被复制,数组创建别名 111
6.3.2 malloc和内存操纵 114
6.3.3 错误来源于星号 115
6.3.4 你需要知道的各种指针运算 116
第7章 可以忽略的C语法 121
7.1 不需要明确地从main函数返回 122
7.2 让声明流动 122
在运行时设置数组的长度 124
7.3 减少类型转换 125
7.4 枚举和字符串 126
7.5 标签、goto、switch和break 128
7.5.1 考虑goto 129
7.5.2 switch 130
7.6 被摒弃的float 132
第8章 障碍和机遇 136
8.1 营造健壮和繁盛的宏 136
预处理器技巧 140
8.2 static和extern链接 143
只在头文件中声明外部链接的元素 145
8.3 const关键字 147
8.3.1 名词-形容词形式 148
8.3.2 压力 149
8.3.3 深度 150
8.3.4 char const **问题 150
第9章 文本 154
9.1 使用asprintf,使字符串的处理不再痛苦 154
9.1.1 安全 156
9.1.2 常量字符串 156
9.1.3 用asprintf扩展字符串 158
9.1.4 strtok的赞歌 159
9.2 Unicode 163
9.2.1 C代码的编码 165
9.2.2 Unicode函数库 167
9.2.3 示例代码 168
第10章 更好的结构 171
10.1 复合文字 172
通过复合文字进行初始化 173
10.2 可变参数宏 173
10.3 安全终止的列表 175
10.4 Foreach 176
10.5 函数的向量化 176
10.6 指定的初始化值 178
10.7 用零初始化数组和结构 180
10.8 typedef可以化繁为简 181
10.9 从函数返回多个数据项 183
10.10 灵活的函数输入 187
10.10.1 把函数声明为printf风格 187
10.10.2 可选参数和命名参数 189
10.10.3 使无聊的函数焕发光彩 191
10.11 void指针以及它所指向的结构 197
10.11.1 具有通用输入的函数 197
10.11.2 通用结构 201
第11章 C语言的面向对象编程 206
11.1 你所不明白的(以及为什么你不能不明白) 207
11.1.1 作用域 207
11.1.2 用操作符重载进行重载 210
11.2 扩展结构和字典 214
11.2.1 扩展一个结构 215
11.2.2 实现一个字典 219
11.2.3 基于指向对象的指针编码 223
11.3 你结构中的函数 224
11.4 引用计数 228
11.4.1 示例:一个子字符串对象 229
11.4.2 一个基于代理的组构造模型 233
第12章 库 240
12.1 GLib 240
12.2 POSIX 241
12.2.1 为巨大的数据集合使用mmap 241
12.2.2 用Pthreads轻松实现线程 243
12.3 GNU科学计算库 251
12.4 SQLite 254
12.5 libxml和cURL 256
后记 261
术语表 262
· · · · · · (收起)
丛书信息
· · · · · ·
O'Reilly动物系列(中译本)(共317册),
这套丛书还有
《安全防御入门手册》《实用C语言编程》《领域驱动设计学习手册》《可伸缩架构》《C程序设计新思维(第2版)》
等
。
喜欢读"C程序设计新思维"的人也喜欢 · · · · · ·
- 深入理解C指针 8.5
- Python 3面向对象编程 8.4
- C语言接口与实现 9.2
- C++程序设计原理与实践 8.8
- 征服C指针 8.1
- Effective Python 8.9
- 编程精粹 9.0
- Linux命令行大全 8.0
- 计算的本质 8.8
- 计算机系统概论 9.2
C程序设计新思维的书评 · · · · · · ( 全部 4 条 )
> 更多书评 4篇
论坛 · · · · · ·
在这本书的论坛里发言这本书的其他版本 · · · · · · ( 全部6 )
-
人民邮电出版社 (2018)暂无评分 3人读过
-
O'Reilly Media (2012)7.2分 42人读过
-
O'Reilly Media (2014)暂无评分 4人读过
-
歐萊禮 (2014)暂无评分 2人读过
以下书单推荐 · · · · · · ( 全部 )
- 2022要看的书 (谢小漫)
- C (李鼎)
- T (dhcn)
- 翻译的很坑的计算机图书 (sliverbullet)
- C/C++学习 (yannsun)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
- 在豆瓣转让 有48人想读,手里有一本闲着?
订阅关于C程序设计新思维的评论:
feed: rss 2.0
0 有用 iphyer 2015-11-25 03:13:37
我觉得写得比较杂乱,事实上这个不是一本完整的语法细节书而是工程实践指南和总结。需要你有比较好的基础然后才能理解作者在讲述什么和目的。因为覆盖的很多,所以有不少地方有点太过简练。但是还是很不错的书!
0 有用 MaybeNextTime 2018-09-28 23:42:36
内容还算不错,介绍了C语言在实际应用中遇到的问题,并且强调了调试、测试、构建等,确实有很多C语法之外的东西。可惜翻译实在太差。
1 有用 流浪地球 2015-09-06 23:41:55
目录好过内容。因为oreilly的名头和目录才买了这本书。其实挺好的一个主题,但每个内容作者都蜻蜓点水的说了一两句,没有深入介绍。
0 有用 很水 2016-11-10 23:04:52
入门。还有东西可学。
0 有用 momo 2018-04-12 15:39:23
C99部分还可以,工具部分有点老,翻译有些地方莫名其妙。
0 有用 海带皮的皮 2020-04-27 10:19:38
C is punk rock
0 有用 bdu 2019-02-23 11:25:34
检视阅读
0 有用 MaybeNextTime 2018-09-28 23:42:36
内容还算不错,介绍了C语言在实际应用中遇到的问题,并且强调了调试、测试、构建等,确实有很多C语法之外的东西。可惜翻译实在太差。
0 有用 momo 2018-04-12 15:39:23
C99部分还可以,工具部分有点老,翻译有些地方莫名其妙。
0 有用 阿拉伯的鞋匠 2017-03-08 23:14:45
简单的读了一下,无非讲了一些C语言的基础知识,还有其需要的工具链。