新書推薦:
《
非言语沟通经典入门:影响人际交往的重要力量(第7版)
》
售價:NT$
560.0
《
山西寺观艺术壁画精编卷
》
售價:NT$
7650.0
《
中国摄影 中式摄影的独特魅力
》
售價:NT$
4998.0
《
山西寺观艺术彩塑精编卷
》
售價:NT$
7650.0
《
积极心理学
》
售價:NT$
254.0
《
自由,不是放纵
》
售價:NT$
250.0
《
甲骨文丛书·消逝的光明:欧洲国际史,1919—1933年(套装全2册)
》
售價:NT$
1265.0
《
剑桥日本戏剧史(剑桥世界戏剧史译丛)
》
售價:NT$
918.0
|
編輯推薦: |
《C语言实用之道》的优势在于它还阐述了具体领域的实践操作:数值计算(积分计算,单变量,多变量,常见定理的应用,这类主题是罕见的,也正是本书的珍贵之处);嵌入式开发(位操作,字节序,信号与中断,线程与信号,并发与线程,为将来读者阅读APUE这类专著奠定基础);数据库操作(如何用C去操作MySQL和SQLite这类关系型数据库,而且在这些章节中会用到之前章节介绍的数据结构基础类库,可以使读者重新复习前面学到的内容,不断进行巩固);Web服务器交互(介绍WWW, HTTP,Web服务器的基本概念,工作原理,并展示如何将一个Web服务器集成到C写的程序中,从而可以通过Web浏览器来和自己写的C程序进行交互,还介绍了如何与HTTP,JavaScript,jQuery进行交互,如何将当下流行火爆的嵌入式开源Web服务器Mongoose集成到你的C项目中,以及如何对Mongoose其进行剪裁和定制)。异常处理机制,用C语言的long-jump实现了一个类似C和Java中异常处理的机制,*是令人耳目一新。
|
內容簡介: |
阅读《C语言实用之道》,可以学习实用的C技术,包括在可复用的函数中经常用到的算法。在本书中,你将轻松获得以下代码和建议:代码布局和预处理器;控制结构、迭代和选择;指针和结构;数据库;可复用性;列表、数组、FIFO和栈;搜索和排序;递归;二叉树;C语言中的和自建的字符串辅助功能;使用Mongoose开发Web服务;构建MathSearch迷宫的游戏应用代码;以及嵌入式软件。 《C语言实用之道》除了提供可立即投入使用的模块以外,还教你如何充分用好C语言,这是很多面向初学者的其他书籍所不能提供的。 本书特色 ?避免常见的C陷阱与缺陷 ?用好列表和数组 ?执行搜索和排序 ?利用二叉树存储和检索数据 ?用好递归 ?管理异常 ?访问数据库 ?利用数值计算方法,结合实际应用计算积分 ?通过一种便捷的、不出错的方法来操纵字符串 ?构建一个MathSearch游戏应用类似于WordSearch游戏 ?通过一种便捷的、不出错的方法来操纵字符串 ?处理与嵌入式应用相关的问题
|
關於作者: |
作者简介:在Zambon的职业生涯中,他去过五个不同国家的八个城市,曾任软件开发人员、系统顾问、过程改进经理、项目经理和首席运营官。自2008年初以来,他致力于编写软件来生成和解决数字难题。访问他的网站http:zambon.com.au,可以看到他撰写的论文和所著书籍的完整列表。
译者简介:潘爱民,任职于阿里巴巴业务平台事业部,担任首席架构师职位。长期从事软件和系统技术的研究与开发设计工作,撰写了大量软件技术文章,著译了多部经典计算机图书,在国内外学术刊物上发表了30多篇文章。曾任教于北京大学和清华大学兼职,后进入工业界,先后任职于微软亚洲研究院、盛大网络发展有限公司和阿里巴巴集团。获得了数学学士学位和计算机科学博士学位,主要研究领域包括软件设计、信息安全、操作系统和互联网技术。
|
目錄:
|
第1章 引言 1
1.1 编码风格 1
1.1.1 缩进 2
1.1.2 命名和其他规范 4
1.1.3 goto的使用 5
1.2 如何阅读本书 7
第2章 微妙之C 9
2.1 变量的作用域和生命周期 9
2.1.1 局部变量 9
2.1.2 全局变量 13
2.1.3 函数 14
2.2 按值调用 15
2.3 预处理器宏 18
2.4 布尔值 19
2.5 结构打包 22
2.6 字符和区域 24
2.7 普通字符和宽字符 27
2.8 处理数值 32
2.8.1 整数 32
2.8.2 浮点数 34
2.9 本章小结 54
第3章 迭代、递归和二叉树 55
3.1 迭代 55
3.2 递归 57
3.3 二叉树 59
3.3.1 图形化显示一棵树 65
3.3.2 生成一棵随机树 83
3.3.3 遍历一棵树 88
3.3.4 更多关于二叉树的内容 93
3.4 本章小结 95
第4章 列表、栈和队列 97
4.1 列表 98
4.2 栈 99
4.2.1 基于数组的栈 99
4.2.2 基于链表的栈 109
4.3 队列 113
4.3.1 基于数组的队列 114
4.3.2 基于数组的队列的更多
内容 120
4.3.3 基于链表的队列 126
4.4 本章小结 130
第5章 异常处理 133
5.1 长跳转 134
5.2 THROW 135
5.3 TRY和CATCH 136
5.4 多个CATCH 144
5.5 多个TRY 145
5.6 异常用法样例 149
5.7 本章小结 152
第6章 字符串辅助功能 153
6.1 字符串的分配和释放 154
6.1.1 str_new 155
6.1.2 str_release 159
6.1.3 str_release_all 161
6.1.4 str_list 162
6.1.5 一些例子 163
6.1.6 多个栈 166
6.2 字符串格式化 169
6.3 字符串信息 171
6.4 字符串更新 173
6.4.1 字符串拷贝 173
6.4.2 字符串转换 176
6.4.3 字符串整理 177
6.4.4 字符串移除 179
6.5 搜索 181
6.5.1 找到一个字符 181
6.5.2 找到一个子串 186
6.6 替换 189
6.6.1 替换一个字符 189
6.6.2 替换一个子串 191
6.7 提取一个子串 193
6.8 拼接字符串 196
6.9 更多功能 200
6.10 本章小结 201
第7章 动态数组 205
7.1 数组的分配与释放 205
7.1.1 分配一个数组 206
7.1.2 释放一个数组 208
7.1.3 多个栈 212
7.2 改变一个数组的大小 215
7.3 数组的拷贝和复制 219
7.4 选择数组元素 222
7.5 本章小结 225
第8章 搜索 227
8.1 比较 227
8.1.1 C语言的标准比较
函数 227
8.1.2 比较结构 230
8.1.3 比较数组 232
8.1.4 模糊化 232
8.2 搜索 238
8.2.1 未排序的整数数组 238
8.2.2 未排序的指针数组 246
8.2.3 排序的数组 251
8.2.4 链表与二叉搜索树 257
8.3 本章小结 277
第9章 排序 279
9.1 插入排序 279
9.2 希尔排序 280
9.3 冒泡排序 285
9.4 Quicksort快排 286
9.5 整数数组 296
9.6 标准C函数 298
9.7 本章小结 301
第10章 数值积分 303
10.1 从单变量函数开始 303
10.2 梯形规则 306
10.3 Simpson规则 310
10.4 Newton-Cotes公式 313
10.5 决定何时停止 317
10.6 奇点 321
10.7 蒙特卡洛 324
10.8 3D积分 329
10.8.1 积分域 330
10.8.2 从2D的梯形到3D的
棱柱 331
10.8.3 改进棱柱规则 336
10.8.4 将矩形规则转
换成3D 340
10.9 多重积分的最后一些
考虑 342
10.10 本章小结 343
第11章 嵌入式软件 345
11.1 位操作 346
11.2 端 349
11.3 嵌入式环境 351
11.3.1 裸主板 351
11.3.2 实时OSRTOS 352
11.3.3 高级OS 353
11.4 信号和中断 353
11.5 并发性 365
11.6 本章小结 371
第12章 数据库 373
12.1 MySQL 374
12.1.1 使用CLI创建和填充一个
数据库 374
12.1.2 MySQL Workbench 380
12.1.3 在C程序中使用
MySQL 382
12.2 SQLite 395
12.2.1 在CLI中使用SQLite 398
12.2.2 在C程序中使用
SQLite 399
12.2.3 使用动态字符串和
数组 404
12.3 本章小结 408
第13章 使用Mongoose开发Web
服务器 409
13.1 Web页面和协议 409
13.2 动态Web页面 413
13.3 最简单的支持Web
服务器的应用程序 413
13.3.1 事件处理器函数 415
13.3.2 主程序 416
13.4 支持Web服务器的应用
程序 416
13.4.1 静态变量 419
13.4.2 main 420
13.4.3 e_handler、get_x和
send_response 420
13.4.4 index.html 423
13.5 定制Mongoose 428
13.6 本章小结 431
第14章 游戏应用:
MathSearch 433
14.1 MathSearch规范和设计 434
14.1.1 MathSearch规范 434
14.1.2 MathSearch设计 435
14.2 实现MathSearch 437
14.3 模块:count 456
14.4 模块:display 457
14.5 模块:save_html 464
14.6 模块:save_images 470
14.7 本章小结 475
附录A 缩写词 477
附录B SQL介绍
|
內容試閱:
|
这是一本讲述C语言实践的书,作者以自身的实践和思考来展示C语言编程中的基础概念和典型使用场景。C语言本身简洁而又灵活,有强大的表达能力,几乎可以实现迄今为止所有能够想象到的计算能力。然而,越来越多的程序员在弃用C语言,改而学习更具生产效率的编程语言。很多人提出的一个问题是,学了C语言有什么用?从现实的角度,用C语言编写的、新的大型软件越来越少,但是,一些关键的软件往往离不开C语言,如图形引擎、网络协议等一些性能关键的模块,当然少不了像操作系统和驱动程序之类的最底层软件。因此,C语言在各种编程语言排行榜上始终排在前列。另外,C语言也适合一些小而美的程序,在《C语言实用之道》中可以看到这样一些例子。以我个人之见,C语言是最贴近计算机工作原理的高级语言,并且Internet上有丰富的文档和代码积累,每一个对计算机工作原理有好奇心的IT从业人员都应该掌握C语言。
《C语言实用之道》内容涵盖两大部分。第一部分介绍C语言编程中的基本概念和程序设计基础前7章,涉及变量、宏、结构、本地化、宽字符、整数和浮点数的表达形式等基本语言层面的概念和要点第2章,也包括迭代、递归、链表、栈、队列、异常等程序设计中广泛使用的设计元素第3至第5章,同时作者还完整剖析了两个实用案例:字符串第6章和动态数组第7章。第二部分是用C语言来完成特定领域中的开发示例,包括搜索第8章、排序第9章、数值积分第10章、嵌入式软件开发第11章、嵌入数据库功能第12章、嵌入Web服务器第13章以及游戏应用开发第14章。即使读者在实践中不需要涉猎如此广泛的应用范围,通过阅读这些章,也可以了解到C语言在这些领域中是如何被使用并发挥作用的。
这不是一本教科书,但是其内容非常适合学习C语言,并且作者的叙述风格也很有特色,他直接以第一人称和第二人称来讲解书中的内容,就好像在课堂上传授C语言的开发经验。《C语言实用之道》在表达上有明显的口语化特点,相信在阅读时会有一种亲切感,学习也相对要轻松一些。然而,《C语言实用之道》通过大量的例子和代码来讲解概念和技巧,这确保了《C语言实用之道》内容的严谨性,并且不少代码非常有启发意义。此外,《C语言实用之道》的代码又是成体系的,前后一致性比较好,如第6和第7章中讲到的字符串和动态数组组件,在后面的章节中也都用到了。从这个角度看,这《C语言实用之道》又非常适合作为课程参考材料,教师在讲解了C语言基础知识以后,可以成体系地引入这《C语言实用之道》中的内容。
我已经很多年没有接手翻译或著书的工作了,当王军编辑向我推荐这《C语言实用之道》时,无论是内容,还是作者的经历,都引起我的共鸣。作为一名C程序员老兵,我看到每一个标准C函数都有一种亲切感。基于这样的心情,我答应王军编辑翻译这《C语言实用之道》。经过一年来的努力,终于完成了翻译工作。原著中有一些笔误,我在翻译过程中修正了一些,但我相信,翻译本身难免也会引入新的错误,虽然经过两遍校对,但还会留有错误,请读者谅解。
潘爱民
2017年12月于杭州
|
|