新書推薦:
《
药食同源中药鉴别图典
》
售價:NT$
305.0
《
设计中的比例密码:建筑与室内设计
》
售價:NT$
398.0
《
冯友兰和青年谈心系列:看似平淡的坚持
》
售價:NT$
254.0
《
舍不得星星:全2册
》
售價:NT$
356.0
《
汉字理论与汉字阐释概要 《说解汉字一百五十讲》作者李守奎新作
》
售價:NT$
347.0
《
汗青堂丛书144·决战地中海
》
售價:NT$
765.0
《
逝去的武林(十周年纪念版 武学宗师 口述亲历 李仲轩亲历一九三零年代武人言行录)
》
售價:NT$
250.0
《
唐代冠服图志(百余幅手绘插画 图解唐代各类冠服 涵盖帝后 群臣 女官 士庶 军卫等 展现唐代社会风貌)
》
售價:NT$
398.0
|
內容簡介: |
全书共分为四部分,第一部分(第1~4章)是基本内容,包括了创建C 程序的基本工具和技术、分支和循环等流程控制语句、内置数据类型和它们的基本属性、C 的各种运算符及其应用,第二部分(第5~8章)是指针和动态内存的内容,包括了指针和引用、动态变量、动态变量所有权和生命期、类和结构等,第三部分(第9~10章)是面向对象的程序设计内容,包括了类的设计、抽象与封装、继承和多态性等,第四部分(第11~13章)是较深的高级内容,包括了模板、容器和迭代器、异常处理。本书内容丰富,结构清晰,在知识讲解的基础上,提供了大量的例题和习题,使读者通过学习概念以及训练和实践,掌握程序设计的方法和过程,并具备良好的程序设计风格。
本书可作为高等院校计算机专业的教材,也可供从事计算机软件开发的科研人员学习参考。
|
關於作者: |
吴晓梅 拥有十多年软件开发和教学经验,在数据结构、算法设计等方向具有一定研究,并且热衷于C 的培训和教学,已出版多本学术专著和教材。
|
目錄:
|
第1章您的第一个C 程序1
1.1C 使用的优势1
1.2Hello World!1
1.3C 的构建流程4
1.4C 关键字5
1.5预处理指令7
1.5.1include7
1.5.2宏指令8
1.5.3条件编译9
1.6输入/输出(I/O)语句12
1.7函数16
1.7.1传递参数17
1.7.2重载和默认参数19
1.8测试:编写个人信息登记应用程序22
1.9总结23
第2章控制流程24
2.1简介24
2.2ifelse语句25
2.3switchcase语句29
2.4循环语句32
2.4.1循环简介32
2.4.2while循环32
2.4.3dowhile循环34
2.4.4for循环37
2.4.5基于范围的for循环38
2.5break/continue语句41
2.5.1break语句41
2.5.2continue语句43
2.6测试:使用循环和条件语句创建数字猜谜游戏46
2.7总结47
第3章内置数据类型48
3.1简介48
3.2数据类型修饰符49
3.3内置数据类型49
3.4数组50
3.4.1数组的初始化51
3.4.2访问数组中的元素53
3.4.3数组的内存54
3.4.4多维数组56
3.5向量58
3.5.1访问向量中的元素58
3.5.2初始化和修改向量中的元素60
3.6类和结构62
3.6.1类62
3.6.2结构63
3.6.3访问修饰符64
3.7构造函数/析构函数66
3.8测试:编写注册应用程序69
3.9总结71
目录深度学习C 第4章C 的运算符72
4.1简介72
4.2算术运算符73
4.3关系运算符76
4.3.1相等运算符77
4.3.2比较运算符78
4.4一元运算符81
4.4.1负号(-)运算符81
4.4.2递增( )和递减(--)运算符82
4.5赋值运算符83
4.6逻辑运算符85
4.7运算符重载87
4.8位运算符89
4.9测试:Fizz Buzz91
4.10小结92
第5章指针和引用94
5.1简介94
5.2内存地址95
5.2.1指针95
5.2.2指向数组的指针98
5.2.3指针的算术运算99
5.2.4指向指针103
5.3引用105
5.4指针和引用作为函数参数107
5.5指向类或结构的指针109
5.6引用作为函数的参数111
5.7测试:使用指针和引用进行字符串数组的操作114
5.8小结114
第6章动态变量115
6.1简介115
6.2动态变量116
6.3动态数组121
6.4动态变量的7个问题123
6.4.1问题1:在创建动态变量之前,使用指向动态变量的指针123
6.4.2问题2:删除一个动态变量之后,再使用动态变量125
6.4.3问题3:创建了一个动态变量,但忘记删除126
6.4.4问题4:覆盖一个指向动态变量的指针126
6.4.5问题5:多次删除一个动态变量128
6.4.6问题6:以delete,而不是delete\\[\\]删除一个动态数组129
6.4.7问题7:以delete\\[\\],而不是delete删除一个动态变量130
6.5动态容器131
6.5.1链表131
6.5.2二叉搜索树132
6.6递归数据结构133
6.6.1在一个递归数据结构中访问项133
6.6.2查找项134
6.6.3添加项135
6.6.4删除动态项136
6.7测试:创建类实例的二叉搜索树143
6.8小结144
第7章动态变量所有权和生命周期145
7.1简介145
7.2资源获取初始化(RAII)146
7.3管理数据结构中动态变量149
7.4智能指针154
7.4.1unique_ptr﹤﹥154
7.4.2make_unique()157
7.4.3unique_ptr﹤﹥作为一个类成员变量158
7.4.4函数参数和返回值中的unique_ptr﹤﹥160
7.4动态变量的共享所有权161
7.5make_shared()164
7.6测试:使用动态变量存储一本书的单词166
7.7小结167
第8章类与结构168
8.1简介168
8.2类与结构168
8.3联合169
8.4构造函数171
8.4.1默认构造函数171
8.4.2参数化构造函数173
8.4.3复制构造函数175
8.5浅复制或深复制176
8.6赋值运算符183
8.7析构函数186
8.8测试:创建一个视频剪辑(VideoClip)类186
8.9小结187
第9章面向对象的原理188
9.1简介188
9.2类与面向对象的程序设计(OOP)188
9.2.1单一责任原则190
9.2.2封装192
9.2.3Getters和Setters196
9.3返回值或引用202
9.3.1返回值202
9.3.2返回引用202
9.4常量205
9.4.1返回const引用205
9.4.2const函数206
9.5抽象207
9.6测试:一个基本的RPG作战系统211
9.7小结212
第10章面向对象的高级原则213
10.1简介213
10.2继承214
10.2.1单一继承214
10.2.2多重继承217
10.2.3访问修饰符与继承221
10.3虚拟函数223
10.4纯虚拟函数/抽象类225
10.5多态性227
10.6类型转换230
10.6.1静态强制转换231
10.6.2动态强制转换232
10.6.3C类型的强制转换232
10.7测试:编写百科全书应用程序234
10.8小结235
第11章模板237
11.1简介237
11.2创建模板的语法237
11.2.1模板类238
11.2.2多个模板参数240
11.2.3模板函数241
11.2.4模板的专门化245
11.2.5创建模板的注意事项246
11.3队列249
11.3.1队列简介249
11.3.2在队列中实现构造函数和析构函数251
11.3.3动态内存253
11.3.4调整内存大小256
11.3.5压入和弹出256
11.3.6测试257
11.4测试:创建一个通用的堆栈259
11.5小结260
第12章容器和迭代器261
12.1简介261
12.2字符串261
12.2.1字符串构造函数262
12.2.2为字符串赋值263
12.2.3字符串相关操作264
12.3迭代器266
12.4向量269
12.4.1向量构造函数269
12.4.2向量的赋值270
12.4.3向量相关操作273
12.4.4搜索向量273
12.5映射/无序映射278
12.5.1构造映射和无序映射278
12.5.2映射和无序映射的操作279
12.6集合/多集合283
12.6.1构造函数284
12.6.2集合的操作286
12.7队列/堆栈287
12.8测试:将RPG战斗转换为使用标准库容器288
12.9小结289
第13章C 中的异常处理290
13.1简介290
13.2应对突发(或意外)事件291
13.3抛出异常291
13.4未捕获的异常292
13.5捕获异常295
13.6展开堆栈299
13.7资源获取初始化(RAII)和异常处理300
13.8测试:处理异常303
13.9小结304
附录测试参考答案306
第1章您的第一个C 程序306
测试:编写个人信息登记应用程序——参考答案306
第2章控制流程308
测试:使用循环和条件语句创建数字猜谜游戏——参考答案308
第3章内置数据类型310
测试:编写注册应用程序——参考答案310
第4章C 的运算符314
测试:Fizz Buzz——参考答案314
第5章指针和引用316
测试:使用指针和引用进行字符串数组的操作——参考答案316
第6章动态变量319
测试:创建类实例的二叉搜索树——参考答案319
第7章动态变量所有权和生命周期322
测试:使用动态变量存储一本书的单词——参考答案322
第8章类与结构329
测试:创建一个视频剪辑(VideoClip)类——参考答案329
第9章面向对象的原理338
测试:一个基本的RPG作战系统——参考答案338
第10章面向对象的高级原则349
测试:编写百科全书应用程序——参考答案349
第11章模板353
测试:创建一个通用的堆栈——参考答案353
第12章容器和迭代器356
测试:将RPG战斗转换为使用标准库容器——参考答案356
第13章C 中的异常处理363
测试:处理异常——参考答案363
|
內容試閱:
|
在许多软件高手看来,如果不懂C 或C语言,就不能算一名专业的程序员。虽然这种观点可能有那么一点点偏颇,但是也多多少少反映了软件行业的现实。因为许多重要的操作系统、数据库管理系统,以及其他的应用系统的核心代码都是由C 或C语言编写的。甚至有人夸张地认为,正是有了C 和C语言,软件产业乃至IT产业才有了当今的繁荣。
与目前流行的其他高级程序设计语言不同,C 和C语言是对于程序员或计算机友好的程序设计语言,而不能算作对用户友好的语言,因此学习起来有一定的难度。从我个人的经验而谈,C 和C语言应该是除了汇编语言之外,最难掌握,也是功能最强大和实际应用最广泛的程序设计语言。然而,只要选择一本好的教材,静下心来,一步一个脚印地扎实学习下去,一般的人最终都能够掌握这门功能强大的程序设计语言。这本书就是这样的一本教材。
由于C语言是由专业程序员开发的,而C 是对C语言面向对象程序设计的扩展,所以它们更注重效率和实用性。在众多的C 和C语言书中,这本书非常的通俗易懂,而且覆盖了几乎所有重要的内容,并对一般读者和初级程序员容易遇到的陷阱及规避的方法进行了详细的讨论。
本书的第一部分,即第1~4章是基本内容,包括创建C 程序的基本工具和技术、分支和循环等流程控制语句、内置数据类型和它们的基本属性、C 的各种运算符及其应用。如果读者学习或使用过其他高级程序设计语言,会觉得这部分的内容与其他语言大同小异。其实这一部分的内容也是大多数程序设计语言的基础,因此建议读者最好能够将这几章的每个练习都在计算机上编译和运行一下。
本书的第二部分,即第5~8章是指针和动态内存的内容,包括指针和引用、动态变量、动态变量所有权和生命期、类和结构等。实际上,这部分是C 和C语言最突出的方面,也是与其他语言最重要的区别。指针是一把“双刃剑”,它为C 和C语言提供了超级编程能力的同时,也可能造成系统不稳定,甚至崩溃。本书的这一部分对如何正确使用指针这一强大的编程工具进行了极为详细的讨论,还总结了指针常见的问题以及避免问题的具体方法。实际上,第二部分也是C语言的核心内容。对于没有计算机背景的读者来说,学习这一部分的内容有一定的难度,不过一旦理解了这部分的内容,将更容易理解操作系统、数据库管理系统和一些其他应用系统的体系结构和算法。掌握了这部分的内容,可以说已经基本掌握了C语言。同样,建议读者最好能够将这部分的每个练习都在计算机上编译和运行一下。
本书的第三部分,即第9章和第10章是面向对象的程序设计内容,包括类的设计、抽象与封装、继承和多态性等。本书将面向对象的内容刻意放到这一部分才开始介绍,因为对于没有任何程序设计经验的人来说,面向对象的概念可能一时很难理解,但有了前面两部分程序设计的学习,理解面向对象的概念就变得非常自然和简单了。通常,C 面向对象的内容要比其他语言复杂,因为它在对象中不但使用了指针,而且也更为丰富。建议读者在阅读时适当放慢速度,以加深理解。
本书的第四部分,即第11~13章是较高级的内容,包括模板、容器和迭代器、异常处理。这部分的内容对开发实际应用系统非常有用,它包括如何利用C 和C语言的标准程序库加快开发系统的速度、如何开发通用的应用软件以及如何使开发的软件更加稳定。
前言深度学习C 专家来自于菜鸟,牛人(大咖)全靠熬。其实,所谓大咖或专家就是一件事干长了,干久了,在一个行业里混久了,自然而然地就有可能成为专家。借助于C 或C语言这一强大的程序开发工具,相信即使那些只有很少,甚至没有IT背景的人也能一步步地从IT领域的菜鸟进化成老鹰、大咖,进而再成为专家、大师,最后成为一代宗师(只要能够坚持下去)。
最后,预祝读者C 学习之旅轻松而愉快!
作者2022年7月
|
|