描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787512422407
本书全篇分为十章,细分可分为三大部分。*部分为第1章内容,讲述了C语言的重要知识点,也是学习C 必须要掌握的基础知识,包括关键字volatile、令人迷惑的数组与指针、分离编译模式等。第二部分为第2章至第9章,讲述了C 基础与进阶语法知识,包括基础的数据类型、引用、名字空间、左值与右值等相关概念与基本用法,实现高效安全编码必须要掌握的内存管理,面向对象的封装、继承与多态,以及程序异常处理和C 0x新标准等内容。书籍不局限于C 传统语法的介绍,融入C *的变革内容,帮助读者对C 有一个更加全面、与时俱进的了解。第三部分为第10章内容,给出了业界常见的编码规范与建议,供C 学习和从业人员参考,旨在帮助读者写出优秀的工程级代码。
本书既可作为C 编程人员以及相关专业技术人员的参考用书,也可作为高等院校、高职高专院校程序设计相关课程的教学用书。
1.1 认识volatile ……………………………………………………………………… 1
1.2 数组与指针详解……………………………………………………………………
6
1.3 认识size_t和指针类型的大小 …………………………………………………… 13
1.4 野指针…………………………………………………………………………… 16
1.5 字符数组的初始化与赋值 …………………………………………………………
18
1.6 文字常量与常变量 ……………………………………………………………… 20
1.7 数据类型宽度扩展 ……………………………………………………………… 22
1.8 分离编译模式简介 ……………………………………………………………… 24
第2章 C 基础 …………………………………………………………………… 28
2.1 C 发展概述 …………………………………………………………………… 28
2.2 声明与定义的区别 ……………………………………………………………… 29
2.3 认识初始化 ………………………………………………………………………
32
2.4 结构体的初始化与赋值…………………………………………………………… 37
2.5 认识sizeof ……………………………………………………………………… 39
2.6 认识const ……………………………………………………………………… 49
2.7 struct与union…………………………………………………………………… 57
2.8 多字节字符串与宽字符串的相互转换 ……………………………………………
62
2.9 引用的本质 ………………………………………………………………………
69
2.10 链式操作 ………………………………………………………………………
73
2.11 C 的数据类型 ……………………………………………………………… 75
2.12 数据类型转换……………………………………………………………………
78
2.13 数值类型与string的相互转换…………………………………………………… 91
2.14 临时变量的常量性 ……………………………………………………………… 94
2.15 左值、右值和常引用 …………………………………………………………… 96
2.16 mutable的用法 ………………………………………………………………… 99
2.17 名字空间 ………………………………………………………………………
101
2.18 作用域与生命周期 …………………………………………………………… 107
2.19 引用计数 ………………………………………………………………………
112
2.20 I/O流简介 …………………………………………………………………… 119
2.21 头文件的作用和用法…………………………………………………………… __________136
第3章 内存管理…………………………………………………………………… 141
3.1 程序内存布局……………………………………………………………………
141
3.2 堆与栈的区别……………………………………………………………………
143
3.3 new的3种面貌 ………………………………………………………………… 155
3.4 delete的3种面貌 ……………………………………………………………… 158
3.5 new与delete的使用规范 ……………………………………………………… 164
3.6 智能指针简介……………………………………………………………………
168
3.7 STL的四种智能指针 …………………………………………………………… 172
3.8 以智能指针管理内存资源 ………………………………………………………
188
3.9 内存池介绍与经典内存池的实现 …………………………………………………
191
第4章 函 数……………………………………………………………………… 199
4.1 关于 main()函数的几点说明 …………………………………………………… 199
4.2 函数参数入栈的思考 …………………………………………………………… 202
4.3 函数调用时堆栈的变化情况 ……………………………………………………
206
4.4 如何禁止函数传值调用 …………………………………………………………
210
4.5 函数指针简介……………………………………………………………………
213
4.6 操作符重载 ……………………………………………………………………
215
4.7 函数重载、隐藏、覆盖和重写的区别
……………………………………………… 224
4.8 inline函数 ……………………………………………………………………… 230
4.9 变参函数 ………………………………………………………………………
235
第5章 类与对象…………………………………………………………………… 241
5.1 终结类 ………………………………………………………………………… 241
5.2 嵌套类与局部类 ………………………………………………………………… 243
5.3 纯虚函数与抽象类 ……………………………………………………………… 245
5.4 临时对象 ………………………………………………………………………
249
5.5 构造函数体内赋值与初始化列表的区别 …………………………………………
252
5.6 对象产生和销毁的顺序 …………………………………………………………
253
5.7 类成员指针 ……………………………………………………………………
254
5.8 控制对象的创建方式和数量 ……………………………………………………
258
5.9 仿函数 ………………………………………………………………………… 263
5.10 explicit禁止构造函数的隐式调用 ………………………………………………
267
5.11 类的设计与实现规范…………………………………………………………… 270
第6章 继承与多态………………………………………………………………… 275
6.1 多态的两种形式 ………………………………………………………………… 275
6.2 继承与组合的区别 ……………………………………………………………… 278
6.3 基类私有成员会被继承吗 ………………………………………………………
282
6.4 虚拟继承与虚基类 ……………………………………………………………… 285
6.5 typeid简介……………………………………………………………………… 289
6.6 虚调用及其调用的具体形式 ……………………………………………………
293
6.7 动态联编实现原理分析 …………………………………………………………
__________297
6.8 接口继承与实现继承的区别和选择 ………………………………………………
306
6.9 获取类成员虚函数地址 …………………………………………………………
307
6.10 构造函数与析构函数调用虚函数的注意事项 ……………………………………
309
第7章 模板与泛型编程…………………………………………………………… 311
7.1 typename的双重含义 …………………………………………………………… 311
7.2 模板实例化与调用 ……………………………………………………………… 313
7.3 模板特化与模板偏特化 …………………………………………………………
316
7.4 函数声明对函数模板实例化的屏蔽 ………………………………………………
323
7.5 模板与分离编译模式 …………………………………………………………… 324
7.6 endl的本质是什么 ……………………………………………………………… 326
7.7 将模板声明为友元 ……………………………………………………………… 330
7.8 认识容器的迭代器 ……………………………………………………………… 334
7.9 模板元编程简介 ………………………………………………………………… 339
第8章 C 0x初探 ……………………………………………………………… 348
8.1 新关键字 ………………………………………………………………………
348
8.2 基于范围的for循环 …………………………………………………………… 361
8.3 就地初始化与列表初始化 ………………………………………………………
365
8.4 Lambda表达式 ………………………………………………………………… 367
8.5 移动语义与右值引用 …………………………………………………………… 373
8.6 POD类型 ……………………………………………………………………… 383
8.7 委托构造函数……………………………………………………………………
388
8.8 继承构造函数……………………………………………………………………
390
8.9 Unicode支持 …………………………………………………………………… 394
8.10 原生字符串 ……………………………………………………………………
401
8.11 通用属性 ………………………………………………………………………
404
8.12 变参模板 ………………………………………………………………………
407
8.13 函数模板的默认模板参数 ………………………………………………………
417
8.14 折叠表达式 ……………………………………………………………………
419
8.15 强类型枚举简介 ……………………………………………………………… 422
8.16 显示类型转换 ………………………………………………………………… 425
第9章 异常处理…………………………………………………………………… 427
9.1 为什么要引入异常处理机制 ……………………………………………………
427
9.2 抛出异常与传递参数的区别 ……………………………………………………
430
9.3 抛出和接收异常的顺序 …………………………………………………………
438
9.4 构造函数抛出异常的注意事项……………………………………………………
442
9.5 析构函数禁止抛出异常 …………………………………………………………
445
9.6 使用引用捕获异常 ……………………………………………………………… 448
9.7 栈展开如何防止内存泄漏 ………………………………………………………
451
9.8 异常处理的开销 ………………………………………………………………… 453
第10章 编码规范与建议 ………………………………………………………… 456
10.1 命名方式建议 ………………………………………………………………… 456
10.2 代码调试建议 ………………………………………………………………… 459
10.3 头文件使用规范建议…………………………………………………………… 463
10.4 函数使用规范建议 …………………………………………………………… 469
10.5 作用域使用规范建议…………………………………………………………… ?472
10.6 类使用规范建议 ……………………………………………………………… 476
10.7 编码格式建议 ………………………………………………………………… 485
10.8 注释风格建议 ………………………………………………………………… 494
10.9 特性使用建议 ………………………………………………………………… 502
参考文献……………………………………………………………………………… 513__
C语言是C 的基础,是C 的子集,因此C 中的很多知识点都可归于C语言,在学习C 的同时,也是在学习C语言。本书开始介绍了部分C语言的基础内容,用于辅佐C 的学习。比如不太常见的关键字volatile、重要而易出错的野指针、基础的分离编译模式等,这些都是C 中最为基础的知识,每一名合格的程序员都应该掌握。
本书主体内容是围绕C 编程语法展开的,对C 知识点的讲解深度会略高于基础教材,因此初学者在阅读本书时要有耐心,并需结合文中代码示例好好揣摩思考。对于有疑问的知识点,一定要动手实践,将自己的思考和疑问通过代码的形式表达出来,只有这样,才能帮助我们加深对C 晦涩知识点的理解。除了C 的基础内容外,本书还涉及了C
0x新标准提出的常用特性,让读者在学习传统C 的同时,对C 有一个与时俱进的了解。比如,C
11中的关键字auto、就地初始化与列表初始化、Lambda表达式都是值得我们去学习和掌握的,并可将其应用于工程实践中。
掌握编程语言的语法知识只能保证编写的代码能够编译运行,但是,一名成熟的C 开发人员心中必然有一把标尺,这把标尺就是编码规范。初具规模的项目代码不仅为了编译和运行,而且还要能够长久地迭代变更、维护交接。所以,为了能够编写出整洁、规范、优雅的代码,我们应该遵循必要的编码规范和风格,力争让自己写出的代码不被他人诟病。本书在参考了《Google C 编程风格指南》并结合个人经验的基础上,给出了一些规范和建议,比如命名方式、头文件使用规范与包含顺序、编码格式等建议。当然,这些只是一家之言,仅供参考。
本书记录的关于C 的点点滴滴,实则是自己和身边一同求学的小伙伴对C 的学习认知的过程,在这里分享给每一位C 从业者,希望能够用个人的绵薄之力帮助到需要帮助的人。我相信,只要读者潜心细读,多读多练,肯定能从本书中学有所得。当然,由于个人水平有限,书中难免存在不足甚至错误的地方,欢迎大家在CSDN 博客留言指正,共同探讨。联系方式可以在网页搜索CSDN Dablelv。
本书从编写到出版得到了北京航空航天大学出版社各位老师的大力支持和辛苦付出,在此深表感谢。另外,还要感谢本书的另一位作者———我的大学舍友Dr.Wong,参与本书的编写工作;感谢身边的同学和同事在工作和生活上给予的无私帮助。最后,要感谢爱人cat在背后的默默支持与理解,以及家人的辛劳付出和母亲对我的人生教诲。学习的道路并不寂寞,因为有知识相伴;学习的道路也不会平坦无阻,因为逆风的地方更适合飞翔。
吕 吕
2018年12月
评论
还没有评论。