首页>参考读物>计算机科学与技术>软件与程序设计

C语言进阶:重点、难点与疑点解析
作者 : 牟海军 著
出版日期 : 2012-07-12
ISBN : 978-7-111-38861-6
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 357
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

C语言是编程语言中的一朵奇葩,虽已垂垂老矣,但却屹立不倒,诞生了数十年,仍然是最流行的编程语言之一。C语言看似简单,却不易吃透,想要运用好,更是需要积淀。本书是一本修炼C程序设计能力的进阶之作,它没有系统地去讲解C语言的语法和编程方法,而是只对C语言中不容易被初学者理解重点、难点和疑点进行了细致而深入的解读,揭露了C语言中那些鲜为普通开发者所知的秘密,旨在让读者真正掌握C语言,从而编写出更高质量的C程序代码。
全书一共11章:第1章重点阐述了C语言中不易被理解的多个核心概念,很多初学者在理解这些概念时都会存在误区;第2-8章对预处理、选择结构和循环结构的程序设计、数组、指针、数据结构、函数和文件等知识点的核心问题和注意事项进行了讲解;第9章介绍了调试和异常处理的方法及注意事项;第10章对C语言中的若干容易让开发者误解误用的陷阱知识点进行了剖析;第11章则对所有程序员必须掌握的几种算法进行了详细的讲解。

图书特色

语言进阶
重点、难点与疑点解析
牟海军  著
封底:
在编程语言领域,各种新的语言层出不穷,C语言虽已有数十年的历史,但却依然位于编程语言排行榜的榜首,这在编程领域算是独一无二的了。C语言入门相对简单,但是要透彻理解和掌握却不容易,本书对初学者不易理解的难点、疑点和重要知识点进行了解读和剖析,不仅涉及几乎所有的语法知识点,而且包括算法和编码规范方面的话题。对于有一定经验且想进一步提高的C语言开发者而言,本书值得仔细品读,强烈推荐!
—— 51CTO(www.51cto.com)中国领先的IT技术网站
本书主要内容:
堆和栈、全局变量和局部变量、生存期和作用域、内部函数和外部函数、指针变量、指针数组和数组指针、指针函数和函数指针、传址和传值、递归和嵌套、结构体和共用体、枚举、位域等较难理解的核心概念的阐述和对比;
预处理中的疑难知识点,包括文件的包含方式、宏定义及其常见错误解析、条件编译指令和#pragma指令的使用等;
if、switch等选择结构语句的使用注意事项和易错点解析;
for、while、do while等循环结构语句的使用注意事项和易错点解析;
循环结构中break、continue、goto、return、exit的区别;
一维数组、二维数组、多维数组、字符数组、动态数组的定义和引用,以及操作数组时的各种常见错误解析;
不同类型的指针之间的区别,以及指针的一般用法和注意事项;
指针与地址、数组、字符串、函数之间的关系,以及指针与指针之间的关系;
枚举类型的使用及注意事项,结构体变量和共用体变量的初始化方法及引用;
传统链表的实现方法和注意事项,以及对传统链表实现方法的颠覆;
与函数参数、变参函数、函数调用、函数指针相关的一些难理解和容易被理解错的知识点解析;
文件和指针的使用原则、技巧和注意事项;
函数调用和异常处理的注意事项和最佳实践;
与strlen、sizeof、const、volatile、void、void*、#define、typedef、realloc、malloc、calloc等相关的一些陷阱知识点的解析;
时间复杂度、冒泡排序法、选择排序法、快速排序法、归并排序法、顺序排序法、二分查找等常用算法的详细讲解;
良好的编码习惯和编程风格。
前:
2011年10月9日,“C语言之父”和“UNIX操作系统之父”丹尼斯·里奇(Dennis Ritchie)与世长辞,这标志着他所引领的时代已经悄然远去。数十年来,虽然在C语言之后,C++、Java、C#等各种高级编程语言层出不穷,但是广大程序员们一直认为C语言简洁、高效、通用、灵活的特性令其具有独特的魅力。现在的程序语言都朝着复杂化、高级化和“臃肿化”的方向发展,而C语言虽然属于相对“低级”的编程语言,但它的简洁之美是无可替代的。所以,它能一直在编程语言排行榜上处于领跑者的位置。
C语言编程入门很简单,但是要成为“大牛”级的人物却十分难。作为C语言的初学者,如何才能更好更快地去理解和掌握它?如何才能使自己的开发水平迅速得到提升?本书尝试着给出了答案。它是一本修炼C程序设计能力的必读之作,它没有系统地去讲解C语言的语法和编程方法,而是只对C语言中不容易被初学者理解的重点、难点和疑点进行了细致而深入的解读,同时包含大量技巧和最佳实践,揭露了C语言中那些鲜为普通开发者所知的秘密,旨在让读者真正掌握C语言,从而编写出更高质量的C程序代码。
作者简介
牟海军 资深C语言开发工程师,钟爱C语言,对C语言有较深入的理解和研究,实践经验较为丰富;喜欢研究算法,谙熟各种常见算法和经典算法,颇有心得;擅长嵌入式Linux开发,以及使用QT进行嵌入式开发;活跃于CSDN等技术社区,是CSDN的推荐博客专家。
本书微群: http://q.weibo.com/943166

图书前言

为什么要写这本书
  或许绝大多数人都有这样的经历,最初学习C语言的目的是为了应付考试,所以对于C语言只能算是一知半解。真正运用C语言进行编程时会出现很多问题,让人措手不及,这时才发现自己只能理解C语言的皮毛,虽能看懂简单的代码,却写不出程序来,对于那些稍微复杂的代码就更是望尘莫及了。
  为了摆脱对C语言知其然不知其所以然的状态,本书将带领读者重启C语言学习之旅,这次不再是为了考试,而是出于真正的使用需要,所以有针对性地给出了C语言学习中的重点、难点与疑点解析,希望能够帮助更多的C语言爱好者走出困境,真正理解C语言,真正做到学以致用。
  为了让读者能够真正地理解C语言学习中的重点、难点与疑点,以及体现本书学以致用的特色,全书没有采用枯燥的文字描述来讲解C语言相关的知识点,而是采用知识点与代码结合的方式,同时对于代码展开相应的分析,这就避免了部分读者在学习了相关知识点之后仍然不知道如何使用该知识点的弊端,使读者可以通过代码来加深对相关知识点的理解。
  全书在结构安排上都是围绕C语言学习中的重点、难点与疑点进行讲解,如第1章并没有从讲解C语言中的基础知识点开始,而是先列举了C语言学习中易混淆的核心概念,使读者清晰地区分这些核心概念后再开始相应知识点的学习。本书对基础知识点也并非概念性地讲解,而是重点讲解了使用中的要点,同时重点讲解了C语言中的一些调试和异常处理的方法,以及误区和陷阱知识点。最后一章讲解了编程中必须掌握的一些常用算法。总之,本书能够使读者在现有基础上进一步提高自己的C语言编程能力,更清晰地认识和理解C语言。
本书读者对象
  本书适合以下读者:
  C语言爱好者
  嵌入式开发人员
  初、中级C语言程序员
  参加C语言培训的学员
如何阅读本书
  本书共11章,第1章主要针对C语言学习中一些容易混淆的核心概念进行具体讲解,内容跨度比较大,初学者学起来可能有些吃力,所以建议在遇到不懂的知识点时暂时跳过,待学习了后面的相关知识点后再进行相应的学习;第2~8章有针对性地讲解了C语言中的相应知识点,同时有针对性地对其中的要点部分进行具体讲解,读者可以通过这几章的学习夯实每个知识点的基础;第9章重点讲解了在C语言编程中进行调试和异常处理的一些常见方法和技巧;第10章重点讲解了C语言编程中的一些陷阱知识点,通过本章的学习读者可以知道如何在以后编程时绕开陷阱;第11章讲解了一些编程中的常用算法,这是编程中必然会遇到的,因此读者有必要掌握这些常见的算法。
  最后在附录部分给出了养成良好编程习惯的建议。本书针对每个知识点都提供了相应的代码,建议读者在学习的过程中自己动手编写,这样才会发现自己在C语言学习方面的缺陷,进而快速提升自己的编程能力。
勘误和支持
  除署名作者外,参与本书材料整理和代码测试工作的还有项俊、马晓路、刘倩、罗艳、胡开云、余路、张涛、张晓咏、时翔、秦萤雪等。由于作者的水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。读者遇到任何问题都可以发邮件到bigloomy@hotmail.com,我会尽力为读者提供最满意的解答。书中的全部源文件除可以从华章网站(www.hzbook.com)下载外,还可以发邮件向我索取。如果你有更多的宝贵意见,也欢迎发邮件与我交流,期待得到你们的真挚反馈。
致谢
  本书得以出版要感谢很多人,首先要感谢我的导师侯建华教授,无论是在科研还是平时的学习和生活中,都得到您严格的指导和无微不至的关怀,在此向您表示最真诚的敬意和衷心的感谢!
  其次要感谢我的好朋友们,他们是刘倩、马晓路、胡开云、时翔、张晓咏、余路、张涛,有你们的陪伴,我每天都过得很开心,感谢你们在生活中给予我的关心和体贴。同时也感谢实验室的项俊、梁娟、左坚、罗艳、严明君、李思,谢谢你们平时给予的帮助。
  感谢机械工业出版社华章分社的编辑杨福川和姜影,你们在这一年多的时间中始终支持我的写作,你们的鼓励和帮助指引我顺利地完成全部书稿。
  最后要感谢我的家人,没有你们的鼓励和支持,就没有我今天的成绩。在此要特别感谢我的父亲,您多年来对我的悉心教导,我都铭记在心。
  谨以此书献给众多热爱C语言的朋友们!

牟海军(bigloomy)
2012年4月于中国武汉

上架指导

计算机\程序设计

封底文字

说明:加上51CTO的logo
在编程语言领域,各种新的语言一直层出不穷,C语言虽已有数十年的历史,但却依然位于编程语言排行榜的榜首,这在编程领域算是独一无二了。C语言入门相对简单,但是要透彻理解和掌握却不容易,本书对初学者不易理解的难点、疑点和重要知识点进行了解读和剖析,内容不仅涉及几乎所有的语法知识点,而且也包括算法和编码规范方面的话题。对于有一定经验且想进一步提高的C语言开发者而言,本书值得仔细品读,强烈推荐!
——51CTO(www.51cto.com) 中国领先的IT技术网站
本书主要内容:
(1)堆和栈、全局变量和局部变量、生存期和作用域、内部函数和外部函数、指针变量、指针数组和数组指针、指针函数和函数指针、传址和传值、递归和嵌套、结构体和共用体、枚举、位域等较难理解的核心概念的阐述和对比;
(2)预处理中的疑难知识点,包括文件的包含方式、宏定义及其常见错误解析、条件编译指令和#pragma指令的使用等;
(3)if、switch等选择结构语句的使用注意事项,以及易错点解析;
(4)for、While、do while等循环结构语句的使用注意事项和易错点解析;
(5)循环结构中break、continue、goto、return、exit的区别;
(6)一维数组、二维数组、多维数组、字符数组、动态数组的定义和引用,以及操作数组时的各种常见错误解析;
(7)不同类型的指针之间的区别,以及指针的一般用法和注意事项;
(8)指针与地址、数组、字符串、函数、之间的关系,以及指针与指针之间的关系;
(9)枚举类型的使用及注意事项,结构体变量和共用体变量的初始化方法及引用;
(10)传统链表的实现方法和注意事项,以及对传统链表实现方法的颠覆;
(11)与函数参数、变参函数、函数调用、函数指针相关的一些难理解和容易被错误理解的知识点解析;
(12)文件和指针的使用原则、技巧和注意事项;
(13)函数调用和异常处理的注意事项和最佳实践;
(14)与strlen、sizeof、const、volatile、void、void*、#define、typedef、realloc、malloc、calloc等相关的一些陷阱知识点的解析;
(15)时间复杂度、冒泡排序法、选择排序法、快速排序法、归并排序法、顺序排序法、二分查找等常用算法的详细讲解;
(16)良好的编码习惯和编程风格。

作者简介

牟海军 著:暂无简介

图书目录

前言
第1章 必须厘清的核心概念/1
1.1 堆栈/2
1.2 全局变量和局部变量/5
1.3 生存期和作用域/7
1.3.1 生存期/7
1.3.2 作用域/10
1.4 内部函数和外部函数/11
1.5 指针变量/14
1.6 指针数组和数组指针/17
1.7 指针函数和函数指针/20
1.8 传值和传址/22
1.9 递归和嵌套/25
1.10 结构体/29
1.11 共用体/32
1.12 枚举/37
1.13 位域/39
第2章 预处理/47
2.1 文件的包含方式/48
2.2 宏定义/50
2.2.1 简单宏替换/50
2.2.2 带参数的宏替换/52
2.2.3 嵌套宏替换/56
2.3 宏定义常见错误解析/56
2.3.1 不带参数的宏/56
2.3.2 带参数的宏/59
2.4 条件编译指令的使用/62
2.5 #pragma指令的使用/65
第3章 选择结构和循环结构的程序设计/69
3.1 if语句及其易错点解析/70
3.2 条件表达式的使用/76
3.3 switch语句的使用及注意事项/78
3.4 goto语句的使用及注意事项/85
3.5 for语句的使用及注意事项/87
3.6 while循环与do while循环的使用及区别/92
3.7 循环结构中break、continue、goto、return和exit的区别/98
第4章 数组/103
4.1 一维数组的定义及引用/104
4.2 二维数组的定义及引用/110
4.3 多维数组的定义及引用/117
4.4 字符数组的定义及引用/119
4.5 数组作为函数参数的易错点解析/124
4.6 动态数组的创建及引用/130
第5章 指针/139
5.1 不同类型指针之间的区别和联系 /140
5.2 指针的一般性用法及注意事项/144
5.3 指针与地址之间的关系/148
5.4 指针与数组之间的关系/153
5.5 指针与字符串之间的关系/161
5.6 指针与函数之间的关系/163
5.7 指针与指针之间的关系/169
第6章 数据结构/172
6.1 枚举类型的使用及注意事项/173
6.2 结构体变量的初始化方法及引用/177
6.2.1 结构体的初始化/177
6.2.2 结构体的引用/180
6.3 结构体字节对齐详解/184
6.4 共用体变量的初始化方法及成员的引用/193
6.5 传统链表的实现方法及注意事项/196
6.6 颠覆传统链表的实现方法/214
6.6.1 头结点的创建/214
6.6.2 结点的添加/215
6.6.3 结点的删除/217
6.6.4 结点位置的调整/219
6.6.5 检测链表是否为空/221
6.6.6 链表的合成/222
6.6.7 宿主结构指针/225
6.6.8 链表的遍历/225
第7章 函数/230
7.1 函数参数/231
7.2 变参函数的实现方法/235
7.3 函数指针的使用方法/241
7.4 函数之间的调用关系/245
7.5 函数的调用方式及返回值/251
第8章 文件/255
8.1 文件及文件指针/256
8.2 EOF和FEOF的区别/259
8.3 读写函数的选用原则/264
8.4 位置指针对文件的定位/270
8.5 文件中的出错检测/275
第9章 调试和异常处理/279
9.1 assert宏的使用及注意事项/280
9.2 如何设计一种灵活的断言/283
9.3 如何实现异常处理/287
9.4 如何处理段错误/293
第10章 陷阱知识点解剖/299
10.1 strlen和sizeof的区别/300
10.2 const修饰符/301
10.3 volatile修饰符/305
10.4 void和void*的区别/311
10.5 #define和typedef的本质区别/314
10.6 条件语句的选用/317
10.7 函数realloc、malloc和calloc的区别/319
10.8 函数和宏/322
10.9 运算符==、=和!=的区别/323
10.10 类型转换/324
第11章 必须掌握的常用算法/326
11.1 时间复杂度/327
11.2 冒泡法排序/329
11.3 选择法排序/332
11.4 快速排序/334
11.5 归并排序/337
11.6 顺序查找/340
11.7 二分查找/341
附录 如何养成良好的编程习惯/344

教学资源推荐
作者: 刘艺 罗兵 周安栋
作者: 杨颂华 熊海灵 主编 杨明 黄春伦 等编著
作者: Charles N.Fischer, Richard J.LeBlanc
作者: (美)Ira Pohl
参考读物推荐
作者: (美)Elizabeth Drake 著
作者: [美]马克·卢茨(Mark Lutz)著
作者: Cay S.Horstmann, Gary Cornell
作者: Cay S.Horstmann, Gary Cornell