新書推薦:
《
500万次倾听:陪伤心的人聊聊
》
售價:HK$
53.8
《
英国商业500年(见证大国崛起与企业兴衰,启迪未来商业智慧。)
》
售價:HK$
80.6
《
万千心理·儿童心理治疗中的心智化:临床实践指导
》
售價:HK$
87.4
《
自我囚禁的人:完美主义的心理成因与自我松绑(破除你对完美主义的迷思,尝试打破自我评价过低与焦虑的恶性循环)
》
售價:HK$
66.1
《
周易
》
售價:HK$
44.6
《
东南亚的传统与发展
》
售價:HK$
67.2
《
乾隆制造
》
售價:HK$
87.4
《
资治通鉴臣光曰辑存 资治通鉴目录(司马光全集)(全二册)
》
售價:HK$
304.4
|
編輯推薦: |
深入解析C语言特性,塑造编程新思维。通过独辟蹊径的C语言解说之道,展示C语言的编程技巧和优势,带领读者发掘C的魅力,更好地利用C进行程序设计与开发。本书适合普通程序员和高校计算机相关专业的学生阅读,更适合对C情有独钟的人深度学习。
|
內容簡介: |
C语言已经有几十年的历史了。经过长时间的发展和普及,C语言的应用场景有了很大的变化,一些旧观念应该被淡化或者不再被推荐。 本书展现了传统C语言教科书所不具有相关技术。全书分为开发环境和语言两个部分,从编译、调试、测试、打包、版本控制等角度,以及指针、语法、文本、结构、面向对象编程、函数库等方面,对C程序设计的核心知识进行查缺补漏和反思。本书鼓励读者放弃那些对大型机才有意义的旧习惯,拿起新的工具来使用这门与时俱进的简洁语言。 本书适合有一定基础的C程序员和C语言学习者阅读,也适合想要深入理解C语言特性的读者参考。
|
關於作者: |
自从于加州理工学院获得社会科学博士后,Ben Klemens就一直从事统计分析和人口的计算机辅助建模工作。他的观点是,写代码一定应该是趣味横生的,并先后非常愉快地为布鲁金斯学会、世界银行、美国国家精神健康中心等机构写过分析和建模代码(主要是C代码)。他作为布鲁金斯学会的非常驻研究员,与自由软件基金会一道,做了很多工作来确保有创意的程序员拥有保留其作品使用权的权利。他目前为美国联邦政府工作。
|
目錄:
|
第 1部分开发环境
第 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使用makefile16
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.1Doxygen61
2.5.2用CWEB解释代码62
第3章打包项目65
3.1shell66
3.1.1用shell命令的输出来替换命令66
3.1.2用shell的循环来处理一组文件68
3.1.3针对文件的测试70
3.1.4fc73
3.2makefile还是shell脚本75
3.3用Autotools打包代码77
3.3.1一个Autotools的示例79
3.3.2用makefile.am来描述makefile82
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支持下的Distutils116
第 2部分语言
第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和break147
7.5.1探讨goto147
7.5.2switch150
7.6被摒弃的float151
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.4char const **问题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.2Unicode192
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.5Foreach206
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.2OpenMP283
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.5pthread299
12.6C原子304
第 13章函数库311
13.1GLib311
13.2POSIX312
13.2.1解析正则表达式312
13.2.2为巨大的数据集合使用mmap317
13.3GNU科学计算库320
13.4SQLite322
13.5libxml和cURL325
附录AC101329
后记348
术语表349
|
|