由于此商品库存有限,请在下单后15分钟之内支付完成,手慢无哦!
100%刮中券,最高99元无敌券,券有效期7天
活动自2017年6月2日上线,敬请关注云钻刮券活动规则更新。
如活动受政府机关指令需要停止举办的,或活动遭受严重网络攻击需暂停举办的,或者系统故障导致的其它意外问题,苏宁无需为此承担赔偿或者进行补偿。
醉染图书C/C++实践进阶之道978711355
¥ ×1
篇夯实C语言核心基础
章Hello,C语言
1-1闭上眼睛细数C语言的特点2
C语言精巧2
支持结构化程序编写模型2
变量和语句是C语言的细胞3
数学运算和逻辑表达式是C语言的个难点3
函数是C语言赐给我们力的武器3
数组是我们次学习组织数据4
指针是C语言的精华,但它是魔鬼发明的4
struct是我们临摹世界的画板4
掌握基本概念的组合才是成为C语言高手的必经之路4
字符串是指针确认的5
位运算是C语言底层开发的特色5
预处理命令是程序开发的脚手架5
文件是一个序列5
1-2从基本概念开始6
1-3掌握C语言核心,逐步扩张8
1-4C++时代的C语言学习11
1-5C++:更好的C12
新的注释模式13
新的输入/输出方法13
const的新功能13
变量的定义更加灵活13
函数的重载13
带默认参数的函数13
变量的引用类型13
新的内存分配函数new和delete14
内嵌(inline)函数14
作用域运算符14
第2章建立起程序设计基本概念
2-1软件与程序15
2-2程序与可执行文件16
-程序与源程序17
2-4源程序与程序设计语言18
2-5程序设计的基本过程19
2-6文件和目录19
2-7理解编码上机调试和步骤22
2-8C/C++程序员成长经验
阶段:C语言的学习
第二阶段:课程设计和设计24
第三阶段:硬件开发和学习C++25
第四阶段:中型项目开发经验25
第五阶段:大型项目开发经验25
总结个人学习成长的道路25
因材施教:使用两套教材26
第3章在VisualC++中验C程序
3-1选择VisualC++的三个理由27
3-2调试程序的五个步骤28
3-3编写Console应用32
3-4跨过调试程序的初障碍35
语法错误(SyntaxError)38
语义错误(SemanticError)38
运行错误(BUG)39
3-5VisualC++简易使用参考40
新建文档40
打开文档41
查看文档42
保存文档44
在打开的文档中搜索文本45
在已打开的文档中替换文本45
在磁盘文件中搜索文本46
常规表达式搜索46
3-6从TurboCrlandC++47
3-7理解函数库和头文件48
第4章代码基本逻辑:顺序、选择和循环
4-1流程图51
4-2顺序结构52
【示例4-1】输入三角形的三边长,求三角形面积52
4-3选择结构52
4-3-1if语句52
【示例4-2】if语句的基本用法(输入数值,如果大于0,输出“正数”)53
【示例4-3】利用if-else语句对数值进行正负的判断54
4-3-2switch语句54
【示例4-4】利用switch判断用户输入的日期是星期几55
【示例4-5】判断输入的日期是星期几(使用break语句)56
【示例4-6】利用if语句根据范围给出等级56
4-4循环结构57
4-4-1利用goto语句和if语句构成循环57
【示例4-7】计算1+++…+100的值57
4-4-2while语句58
【示例4-8】利用while循环语句计算1+++…+100的值58
4-4-3do-while语句58
【示例4-9】利用do-while循环语句来计算1+++…+100的值59
4-4-4for语句59
【示例4-10】小高斯的for循环语句实现方法。60
【示例4-11】小高斯的for循环语句实现方法之二(省略表达式2的应用举例)60
【示例4-12】小高斯的for循环语句实现方法之三(省略表达式3的应用举例)60
【示例4-13】小高斯的for循环语句实现方法之四(省略表达式1和表达式3的
应用举例)61
【示例4-14】当需要循环时,for循环语句表达式全部被省略的应用举例61
【示例4-15】小高斯的for循环实现方法之五(for语句中的逗号表达式)61
【示例4-16】读懂奇怪的for循环(for循环语句中的表达式2为特殊表达式时)61
【示例4-17】利用while循环求满足n2-15n-36>0的整数62
4-4-5break语句63
【示例4-18】演示break语句的应用:计算1+++…+100的值63
4-4-6continue语句63
【示例4-19】演示continue语句的应用:计算1到100的偶数之和63
4-5本章综合实例64
4-5-1综合实例1:求某整数段区间中的素数,并输出64
4-5-2综合实例2:根据用户输入的年份判断年份为闰年66
第5章加强对函数的理解
5-1函数的引入67
【示例5-1】求从1加到100的值67
【示例5-2】求从1加到n的值68
【示例5-3】求从1加到n的值(高斯算法)69
5-2函数的基本概念69
5-3库函数70
5-4函数的嵌套调用71
【示例5-4】在max3函数中实现嵌套调用71
5-5代码封装:模块化程序设计的起步71
5-6接口/实现思想的次体现72
5-7总结一下:函数帮你编写更好的代码72
5-8对比Pascal语言和C语言中函数使用的差异74
第6章总结:快速掌握C语言基础知识
6-1再次UnderstandC76
6-2把基础知识串起来77
6-3综合实例1:打印Fibonacci数列78
6-4综合实例2:把Fibonacci数列中的素数找出来79
6-5综合案例3:在Fibonacci数列中加入数组的应用80
6-6的综合代码1
6-7成为C程序员你还需要知道的事情82
6-8三小时你可以学会FORTRAN85
第2篇提升你的编程功力
第7章逐步写出大程序
7-1准备案例1:闰年的判断88
7-2准备案例2:这是星期几89
7-3更高要求:万年历的编写91
7-4再完善一下:打印某年日历94
7-5总结与思考:程序成长与模块化96
第8章自己动手编写小工具
8-1DIR命令今犹在97
8-2DOS版DIR命令98
8-3Windows版本的DIR100
8-4工具编写总结和练习103
8-5继续学习和提高104
第9章学会组织自己的代码
9-1解决问题的基本方法和C程序的基本结构105
9-2用Project管理自己的代码108
9-3为自己的码扩功能110
9-4养成一些编码的好习惯111
0章读源代码,逐步体会算法的力量
10-1读函数源代码,学技巧116
10-2体会算法的力量118
【示例10-1】判断一个自然数n是素数119
10-3算法的三重境界121
【示例10-2】写一个函数计算当参数为n(n很大)时的值1-+-4+5-6+7-…+n121
【示例10-3】在一个很小的内存空间中,将北京某电话局的8位电话号码排序。号码在
10000个以内122
10-4那些C语言必须调试的陷阱1
第3篇积累专业程序员的开发经验
1章烦琐但很重要的变量和类型
11-1计算机是如何存储变量的126
11-2确保每个对象在使用前已被初始化131
11-3局部变量和全局变量的差别133
11-3-1首先理解函数中的局部变量134
11-3-2其次理解函数外的全局变量135
11-3-3掌握变量在内存中的存储方式136
11-4掌握变量定义的位置与时机138
11-5引用难道只是别人的替身140
2章理解数组和指针
12-1理解指针的本质143
12-1-1指针变量和变量的指针143
12-1-2空指针和void指针145
12-1-3const修饰指针146
12-2论数组和指针的等价147
1-再论数组和指针的差异149
1--1字符串数组与字符指针的区别149
1--2当编译器强行把指针和数组混合151
12-4充满疑惑的数组指针和指针数组152
3章常见更要谨慎的字符和字符串
13-1关于字符编码的讨论155
13-2请牢记字符串结束标志为‘\0’157
13-3请务必小心使用memcpy()系列函数159
【示例13-1】POD对象的复制160
13-4正确使用字符串处理函数161
4章表达式和语句中的陷阱
14-1运算符引发的混乱164
14-2表达式求值顺序不要想当然167
14-3switch-case语句的陷阱170
14-3-1正确使用break语句171
14-3-2case标号和default标号的正确使用173
14-4a||b和a&&b的陷阱174
14-4-1陷阱一:短路求值175
【示例14-1】没想清逻辑,代码死循环175
14-4-2陷阱二:逻辑运算混淆使用176
14-5“悬挂”else引起的问题177
5章函数的秘密
15-1禁止函数返回局部变量的引用180
15-2函数传值、传指针及传引用的效率分析183
15-3内联函数会像宏一样替换吗188
15-4函数重载需考虑什么191
15-4-1准确理解函数重载191
【示例15-1】实现一个打印函数,既可打印int类型,也可打印string类型191
15-4-2为什么引入函数重载192
15-4-3如何处理函数重载192
15-5不要让main返回vid95
15-5-1理解main函数的定义形式195
15-5-2main函数的返回值作用196
15-5-3voidmain()形式函数的风险隐患197
15-5-4“好坏难定”的准则197
15-6尽量拒绝使用变参函数198
【示例15-2】实现一个支持std::string的printf199
15-7为何降低函数的圈复杂度202
15-7-1提炼函数的方法203
15-7-2以明确函数取代参数204
6章正确使用预处理
16-1使用#define定义字面值和伪函数206
16-1-1简单宏定义(字面值)206
16-1-2#define和const定义的恒值常量对比207
16-1-3带参数的宏定义(伪函数)208
16-1-4带参数的宏和函数的区别208
16-1-5引入宏的优点209
16-1-6宏定义和命名空间的关系209
16-2#define的使用陷阱210
16-2-1由操作符优先级引起的问题210
16-2-2使用宏定义,不允许参数发生变化211
16--使用dowhile(false)将宏定义包含的多条表达式放到大括号中211
16-2-4关于...的使用212
16-2-5消除多余的分号213
16-3防止重复包含头文件214
【示例16-1】头文件重复包含bug214
16-3-1解决方案之一:#ifndef方式215
16-3-2解决方案之二:#pragmaonce215
16-3-3#pragmaonce与#ifndef的区别216
16-4assert的副作用216
【示例16-2】断言出现bug217
16-5多学一点,关于#和##的讨论219
16-5-1#让字符串巧妙用在宏定义中219
16-5-2##让宏定义像函数一样输入参数220
16-5-3#与##使用的陷阱221
7章非禁止者,皆可使用
17-1表示语句结束的分号的思考222
17-2goto语句真的一无是处吗224
17-2-1观点一:goto语句是有害的225
【示例17-1】使用goto语句执行数组元素的交换顺序225
17-2-2观点二:某些情况下支持使用goto语句226
17-3条件操作符和逗号操作符229
17-3-1理解条件操作符并用好它229
17-3-2让逗号操作符派上用场0
17-4和魔鬼数字说再见0
17-4-1魔鬼数字带来的麻烦0
17-4-2给魔鬼数字起一个名字1
17-5关于循环语句的变化2
17-5-1新旧标准中for语句的变化2
17-5-2巧用do循环宏定义
17-5-3循环语句的效率4
8章程序员应该知道的指针技术
18-1深刻理解od和od*
18-2防微杜渐,拒绝野指针
18-2-1野指针产生的原因240
18-2-2预防野指针的策略241
18-3“臭名昭著”的空指针到底是什么242
18-3-1怎样在程序中获得一个空指针243
18-3-2使用“if(p)”检查空指针可靠243
18-3-3NULL是什么,它是如何定义的244
18-3-4如果NULL和0作为空指针常数是等价的,到底该用哪一个244
18-3-5NULL可以确保是0,但空指针却不一定245
18-3-6利用空指针(NULL),提高程序运行效率245
18-4多维数组和指针245
【示例18-1】二维数组元素的遍历(两种多维数组声明方式的比较)248
18-5引用和指针的差异249
18-5-1相同点:都是地址概念且可实现继承类的动态绑定250
18-5-2不同点:五方面差异一一道来251
9章C++新增关键字中的关键
19-1尽可能多地使用const254
19-1-1函数声明使用const255
19-1-2函数返回值声明为const255
19-1-3const成员函数256
【示例19-1】字符串输出次数统计(const成员函数)256
19-1-4尽量用const常量替换#define常量定义257
19-2volatile和mutable用在何处258
19-3尽量用new/delete替代malloc/free263
19-3-1谈谈二者的区别263
【示例19-2】增加new/delete的意义263
19-3-2New运算符的三种形式分析265
19-4使用new/delete时要采用相同形式267
【示例19-3】C++中的内存管理(申请的资源放到同一个类中进行管理)268
19-5sizeof和对象的大小270
19-5-1讲讲sizeof的用法271
19-5-2标准数据类型的sizeof271
19-6谨慎使用static276
19-6-1static使用方式之静态局部变量276
19-6-2static使用方式之静态全局变量/函数277
【示例19-4】就算你用了extern,static也禁止你使用278
19-6-3static使用方式之静态成员变量/函数278
【示例19-5】……
第20章专业程序员也经常犯的错
20-1枚举和一组预处理的#define有何不同281
20-2为何structx1structx1stX;无法通过编译284
【示例20-1】CA、CB两个类相互包含引用问题(无法通过编译)285
【示例20-2】CA、CB两个类相互包含引用问题(前向声明实现)286
【示例20-3】CA、CB两个类相互包含引用问题(friend声明实现)286
20-3实现可变数组structintnamelen;charnamestr[1];;287
20-4typedef使用的陷阱290
20-4-1typedef和宏混用陷阱290
20-4-2typedef新规和简化技巧292
20-4-3类回调函数的实现293
【示例20-4】隧道CTunnel类回调函数的声明和实现293
20-5优化结构体中元素的布局294
20-5-1内存对齐295
20-5-2progmapack()宏对齐297
20-6既有结构,为何引入联合298
20-6-1结构体与联合体的差异298
20-6-2联合体的经典应用场景300
20-7提防隐式转换带来的麻烦301
20-7-1隐式转换发生的几种情况301
20-7-2一个不经意的隐式转换陷阱304
20-8如何判定变量相等305
第4篇C++和类——面向对象的世界观
2章从精通C到学习C++
21-1我们为什么要学习C++312
21-2故事:教C语言高手学C++313
21-2-1幕:用C++,程序会简单得多313
21-2-2第二幕:类就是封装315
21--第三幕:用另外一个视角看类316
21-2-4第四幕:成长日志319
21-3拾级而上,成为C++高手319
第22章面向对象设计思想和类
22-1思路决定代码,程序设计思想321
22-1-1机器逻辑化编程思路:结构化程序设计321
22-1-2模拟现实世界的思路:面向对象程序设计322
22-2类,对现实世界抽象3
22-2-1类的定义和组成3
【示例22-1】定义一个手机的类324
【示例22-2】手机类数据成员的声明324
【示例2-】手机类数据成员的类型325
【示例22-4】定义一个手机的类,包括一个显示手机名、型号、尺寸的成员函数326
22-2-2类成员的访问控制326
【示例22-5】类成员的访问控制属327
【示例22-6】定义一个手机的类:实现显示手机名、型号、尺寸的功能328
22--类实例和类成员访问328
【示例22-7】声明一个描述IPhoneX手机的实例指针并为其赋值329
【示例22-8】编写一个手机的类,实现设置和显示手机名、型号、尺寸的功能,
并声明一个针对IPhoneX型号手机的实例,实现设置和显示机器名、
型号、尺寸的功能330
22-2-4类的作用域和对象的生存周期331
【示例22-9】手机类的作用域331
22-2-5this指针332
【示例22-10】利用this指针访问手机类中的数据成员332
22-2-6静态成员333
【示例22-11】定义一个手机短信息的类333
【示例22-12】编写一个手机短信息类,要求能够统计短信息总数的功能333
【示例22-13】编写一个手机短信息类,利用静态成员函数取得短信息总数336
【示例22-14】类的静态成员访问337
22-2-7常成员337
【示例22-15】编写一个手机短信息类,定义一个用于表示信息优选长度的常数据
成员337
【示例22-16】编写一个手机类,定义用于显示手机基本信息的常成员函数339
2-构造函数和析构函数340
2--1构造函数340
【示例22-17】编写一个手机类,定义其构造函数,对手机基本信息进行初始化340
【示例22-18】编写一个手机类,定义其构造函数,采用带有参数的构造函数对手机基本
信息进行初始化342
【示例22-19】定义一个描述IPhoneX手机的类,构造函数带有默认的参数343
2--2复制构造函数344
【示例22-20】编写一个手机类,定义其复制构造函数,实现对实例的复制344
【示例22-21】类的复制构造函数举例(当函数的形参是类的实例时)345
【示例22-22】类的复制构造函数举例(当函数的返回值为类的实例时)345
2--默认复制构造函数346
【示例22-】编写一个手机类,利用默认复制构造函数,实现对实例的复制346
2--4浅复制和深复制347
【示例22-24】编写一个手机类,利用开辟堆内存的方式来存储手机名;利用默认复制
构造函数,实现对实例的复制348
【示例22-25】编写一个手机类,利用开辟堆内存的方式来存储手机名;利用自定义
复制构造函数,实现对实例的复制349
2--5析构函数351
【示例22-26】编写一个手机类,利用开辟堆内存的方式来存储手机名;利用析构函数
对实例进行析构351
22-4类的组合352
22-4-1类的组合的概念352
【示例22-27】手机组合类的定义352
【示例22-28】学生组合类的定义353
22-4-2组合类的构造函数和析构函数353
【示例22-29】学生组合类的构造函数和析构函数的调用顺序353
22-4-3组合类的初始化355
【示例2-0】定义一个面上的线段类,能够计算线段的长度355
22-5综合实例:定义员工类,实现员工信息的存储和输出356
22-6万事万物皆对象359
第章重载完善类方法
-1让函数适应不同类型数据,适应多参数361
-1-1合并相同功能的函数,重载函数的定义361
【示例-1】利用重载定义求值的函数362
-1-2重载函数的匹配有原则362
-2让你的代码更加直观,运算符重载363
-2-1当操作自定义数据时,考虑运算符重载363
【示例-2】定义一个复数类363
【示例-】复数类的加法运算364
-2-2重载的是已经定义的运算符364
【示例-4】利用运算符重载来实现复数的加减运算(运算符作为成员函数)366
【示例-5】利用运算符重载来实现复数的加减运算(运算符作为友元函数)367
--让代码看起来像C++自带的语法368
【示例-】利用运算符重载实现复数类的增量运算367
【示例-】利用友元函数来实现重载370
-2-4换算符重载的技巧370
【示例-】重载强制转换符实现将复数转化为实数371
【示例-】运算符重载的二义问题372
-2-5赋值运算符也能重载372
【示例-10】定义一个描述手机的短信息类,重载赋值运算符373
-重载让C++更自然373
【示例-11】定义一个自定义字符类,进行下标运算符重载373
第24章类的继承
24-1像生物一样进化:继承与派生376
24-1-1继承与派生的概念376
24-1-2代码的进化,派生类的声明377
【示例24-1】类可以通过继承学生类来定义378
24-1-3类的成长,生成派生类的步骤378
【示例24-2】通过继承学生类来实现类379
24-2类的隐藏与接口,继承中的访问控制381
24-2-1公有继承的访问控制381
【示例24-3】已经存在一个点类(Point类),表示几何上的“点”,通过继承点类来定义
一个线段(Linesegmen)类(通过公有继承进行实现)381
24-2-2私有继承的访问控制383
【示例24-4】已经存在一个点类(Point类),表示几何上的“点”通过继承点类来定义
一个线段(Linesegment类)(通过私有继承进行实现)383
24--保护继承的访问控制384
【示例24-5】已经存在一个点类(Point类),表示几何上的“点”,通过继承点类来定义
一个线段(Linesegment类)(通过保护继承进行实现)385
24-3派生类的构造函数和析构函数386
24-3-1派生类的构造函数386
【示例24-6】通过继承学生类来实现类,定义类的构造函数,对基类成员
和派生类成员进行初始化387
24-3-2派生类的析构函数390
【示例24-7】多继承并含有内嵌实例的类的析构函数的工作390
24-4基类与派生类的相互作用391
24-4-1派生类成员的标识和访问391
【示例24-8】多继承并含有相同类成员方法的析构函数的工作392
【示例24-9】作用域分辨符的嵌套使用的错误393
24-4-2基类和派生类赋值规则394
【示例24-10】基类和派生类实例的赋值规则演示395
24-5不抽烟,不喝酒,乞丐和好男人的属居然一模一样395
【综合实例24-1】编写一个操作日期(年、月、日)和时间(时、分、秒)
的程序395
【综合实例24-2】定义在职类,通过虚基类来描述397
第25章虚函数产生多态
25-1巧妙适应多种情况,C++的多态403
25-1-1多态的概念和类型403
25-1-2多态的实现方式404
25-2虚函数404
25-2-1虚函数的概念和定义404
【示例25-1】在学生类与类继承的代码基础上增加计算学生费用的函数
(虚函数实现)404
【示例25-2】利用多态来实现学生类的学费计算407
25-2-2虚函数的使用规则410
25-3纯虚函数与抽象类410
25-3-1纯虚函数410
25-3-2抽象类和抽象基类411
【示例25-3】抽象类的定义和使用:定义一个抽象类,在其派生类中实现虚函数
接口display()411
25-4综合实例:按设定规则输出某企业各类员工的人员姓名与相应薪水412
25-5面向对象还是面向过程419
第5篇以C++为母语
第26章网络工具Ping的功能实现
26-1Windows下命令行:Ping命令424
26-2网络数据翻译官:Wireshark数据包分析426
26-3沟通的艺术:Ping实现原理分析428
26-3-1互联网通信原理428
26-3-2网际控制报文协议介绍429
26-4利用系统API:Windows网络编程技术429
26-5编程模拟实现Ping命令433
26-5-1先梳理程序设计思路433
26-5-2整体的执行流程433
26-5-3关键代码的解析435
26-6总结和建议读者的练习442
第27章C#探索之旅
27-1组件,还是组件443
27-2C#版本的microEditor443
27-2-1启动VisualC#熟悉基本界面444
27-2-2寻找Editor组件445
27--给应用程序添加菜单功能446
27-2-4调用标准对话框447
27-2-5别让右键空白448
27-3前事不忘,后事之师:有经验的程序员也可能做错448
27-4解析C#应用程序结构449
27-4-1usingnamespace449
27-4-2class、Main还有Application449
27-5小结:WinForms组件库使用心得450
27-6练习:为microEditor添加新功能451
27-7我一直想弄明白的几个问题451
27-8思考:如何快速掌握C#452
陈黎娟,目前就职于美国胜利通讯北京分公司,职位为Senior Firmware Engineer(不错固件)。先后在SunPlus,SST等公司担任和不错架构。在嵌入式系统、嵌入式接口和底层固件开发方面积累了丰富的经验。
C/C++的数组是从0开始编号,我们也从第0章开始吧!作为职业程序员,在生活和网络中,学弟学妹们问得多的两个问题是:收入如何?你是如何成为专业程序员的?对于个问题,我一般回答,收入还可以,关键是有时的成就感让人满足。而第二个问题还真不好回答。我只能说读书的时候,就有点儿喜欢编程,就业的时候,发现程序员职位的薪水比较高,工作了几年,就逐渐成了职业程序员了。要详细地说,基本上需要一本书的内容。这也是本书的缘起。读者:理工科大学生有一个现象,在职业程序员中,大学是计算机专业的并不多。这说明,一方面,计算机应用的迅猛发展,使得计算机应用人才缺乏;另一方面,不少理工科专业和计算机专业天然接近,成为职业程序员也不是一件很难的事情。事实上也是如此,大多数理工类专业开设了不少程序设计的相关课程,只需要有一定的兴趣爱好,再加上一定的训练,可以比较轻松地成为专业程序员。因为计算机在各行各业的应用,对于理工科专业的学生来说,编程能力也是一个重要的技能。所以,本书将理工科大学在校生和刚刚进入职场的新人,作为读者对象,希望会对这些人有所帮。定位:你的第二本程序设计图书几乎所有理工类大学都会开设程序设计语言课程。每年也会有数百万人报名参加计算机等级的程序设计类。这是成功的步。但是,会基本语法,不一定会编写程序,不一定能运用到实际中去解决问题。本书定位于理工科大学生的第二本程序设计图书,在已有的程序设计语言的基础上逐步提高,具备专业程序员的基础。花一点时间阅读本书,你就可以多拥有一项能力。从学生到职业程序员,在工作和生活等多方面都要有一定的转型和适应期。本书出版的重要目的是帮读者完成这个转型,帮读者跨越几个技术学的阶。熟练掌握C/C++的意义掌握C/C++的好处如下:(1)C语言和C++基本上是使用量的开发语言,C/C++是现代程序设计之母,C#和Java等都是在C++的基础上演化而来的,因此掌握了C/C++,对学习Java和C#会很有帮。(2)在C/C++的提高学习中,会涉及计算机的数据结构、操作系统等知识,会提高自己解决问题的综合能力。程序设计的学习领域很多,范围广,新概念、新知识层出不穷。但只要你掌握的知识结构合理,综合能力高,学习这些新东西将容易。(3)熟练掌握C/C++,是很多单位招聘的基本要求,大多数理工科专业的在校大学生已经学习了C语言的基本语法,或者已经有了一定的编程基础,只需要再花一定的时间巩固掌握即可。成为专业程序员的台阶我们都知道,从学生到职场人士,有几个台阶需要跨越。回顾一下一个C/C++程序员的成长过程:个台阶,C语言入门。简单来说就是能通过大学的C语言,或者通过计算机等级的二级C。第二个台阶,熟悉库函数。C语言的不少功能是通过库来实现的,学习库函数实际上是熟悉C语言的重要阶段。第三个台阶,能编写比较大一点儿的程序。通过编写千行内的程序,可以积累函数划分、调试经验,慢慢对C/C++语言会用得熟练。第四个台阶,能自己编写一些小的工具。这种训练能积累解决问题的方法。第五个台阶,建立Project的概念,能把程序分解成几个代码文件。第六个台阶,洞悉程序开发的。理解算法、数据结构、解决问题的方法,领域类知识等,这些比语法更重要。第七个台阶,掌握宏、指针、内存管理、static和const等专业C/C++程序经常需要的关键用法。第八个台阶,掌握C++的精髓。C++虽然内容丰富,Core和C语言也不大。这些内容,也是程序设计语言的精髓。在跨越了这八个台阶之后,只需要再经历一些项目开发的强化训练,即可成为一个合格的C/C++程序员。掌握C/C++的学习地图结合十多年的C/C++学习和成长经验,结合当前就业的需要,我们勾勒出一个在校大学生或职场新人的程序设计学习地图。如何学习才能快速掌握C/C++呢?程序员积累了丰富的经验并总结出了下面的学习经验。只要你跟随学习方案,每周抽出3个独立时间段进行上机实践,每次至少2个小时。一共大约需要240个小时的上机训练,即大约40周的自我训练。多2个学期,你就能获得一个质的飞跃。再辅以适当的训练,即可成为一名合格的程序员。根据学习地图和学习经验,我们设计了本书的内容。全书共分为5篇,下面分别介绍这五篇的内容安排。篇 夯实C语言核心基础本书定位的是读者的第二本程序设计类图书。所以,读者可能有以下三种情况:(1)已经学习了一门《C程序设计》之类的课程。篇,可被视作为一个C程序设计的浓缩,帮你回顾了解C语言核心的内容。(2)正在学习《C程序设计》的课程。篇可以作为教学辅导图书,一边学习教材,一边阅读本书,时刻提醒读者注意入门之初别纠缠于语法细节,起到帮读者纠正学习方向的作用。(3)学习了一门程序设计语言,是VB之类的非C程序设计语言。篇可以作为快速学习C语言的教材。当然,这些内容还远远不够,我们在网上提供了一个免费的C语言学习教材。总的来说,篇主要是配合读者正在学习的C语言教材,帮读者掌握C语言核心的语法。同时,帮读者建立重要的程序设计概念。第2篇 提升你的编程功力按照学习地图,提供全书重要的学习概念和学习内容。首先安排库函数的学习,通过学习库函数的应用,一方面熟悉语法,另一方面,建立起接口的观念,进一步通过自己编写个别库函数的训练,可以较快的提升编程能力。其次是逐步编写大软件的项目和办法。教会读者如何编写自己的小工具软件,让读者在趣味中学习。后是让读者自己掌握软件运行时的数据结构、硬盘上的文件数据和用户看到的界面之间的奥秘。当读者明白了这些奥秘后,就会知道自己需要掌握的知识、算法和数据结构,解决问题的方法。接下来,本书通过章节,将读者引入这些领域中,让读者得到初步的修炼。可以说,这部分内容是本书的及格线。即使读者没有掌握本书的内容,只要能理解这部分内容,对读者提升对计算机的认识将会有大的帮。有了上面的基础,可以进入熟练掌握一些关键语法的阶段,这就是static、const、指针、内存管理等。我们对这些内容会进行比较详细的讲解。要知道,这些内容一般都是存在于多本图书之中,而这些内容,又是C/C++程序员必须掌握的语法内容,面试常考,偏偏理解起来又有一些难度。所以,编写时将其放在了熟悉语法,编写了几个小工具之后,作为提高训练之用。第3篇 积累专业程序员的开发经验掌握了C/C++之后,也许会成为一个嵌入式开发程序员。竟,在信息时代,这样的工作岗位会越来越多。为此,我们也花了一定的篇幅来介绍在跨越到第七个台阶之后的程序员。掌握哪些知识,可以成为一个合格的嵌入式程序员。要知道,嵌入式开发专业方面的人才需求极大,数学、物理、机电、仪器、计算机、等相关专业的学生,成为这个行业的主要人才来源,这就相当于给这部分同学,提供了一个就业出口。第4篇 C++和类——面向对象的世界观C++领域有很多经典名著,但这些图书都有一个统一的缺点:太厚。给初学者以恐惧感,不太容易看得完。C++确实博大精深,编程模式多,涉及面广。比如,引入类和对象的概念之后,和前面的知识一交叉,可以有类和指针交叉:对象的指针,对象的内存分配等;类和数组交叉:对象数组;类和函数的交叉:方法和函数的区别,对象作为函数的参数等。引入任何一个新的概念,会引发连锁反应。更何况C++引入的内容越来越多。因此很少有人敢称他掌握了C++的全貌。在实践中,我们会发现,经常用到的只是类、封装、继承、虚函数和多态等几个有限的C++精华,这基本上是所有面向对象开发语言的小核心子集。接下来,我们以抽丝剥茧的方式,把这些C++ Core内容抽取出来,重点讲解,作为读者学习C++程序设计教材的补充。本篇内容和C++教材结合起来学习是比较好的选择。一个全面,一个重点;一个重在语法细节的阐述,一个重在关键要点的把握;一个重在从语言学习的角度编写,一个从实践需要角度侧面叙述。一厚一薄,互相配合,学习起来更容易。第5篇 以C++为母语并不是每一个读者,将来都会成为一个C/C++程序员。大多数现代的程序设计语言都和C++有一定的亲缘关系,Delphi,Java,C#这些先后出现的面向对象的开发语言,在C++的基础上,都有一些自己的独有的特点。对学习者来说,在C/C++上的学习,完全可以用到这些语言的学习上。你的C++功力越深厚,学习这些新的开发语言的时间就越短。本篇简单讲述如何在已经掌握的知识基础上,快速学习这些带有面向对象开发特的程序设计语言。强化每个现代人都必须掌握的学习能力。后续学习与提高有了前面的学习基础,还有两个学习与提高方向,一个是走Java或者C#的通用程序员之路,另外一个是成为一名嵌入式程序开发人员。当然,建议你继续阅读更多的C/C++著作,不断提升自己的“内功”,这对读者学习任何新的工具或者开发语言,都将会带来很大的帮。对于通用程序员之路,一般有三种选择,一个是以Visual C++作为主要的开发工具,这在开发Windows相关系统类应用中比较多见,有了前面的基础,需要适当的Visual C++项目开发训练。训练之前学习《深入浅出MFC》这本书。其次,是走Java或者C#的开发之路,这方面的好书很多,有了本书的基础,读者可以先选择一本语法类,快速强化训练掌握语法,然后根据自己的情况选择合适的图书项目和技巧开发类图书。对于嵌入式程序员就业分支,在学习本书的基础上,可以再开发一个实践项目,封闭开发1~2个月。每天至少4小时,总共需要至少100个小时。经过一个比较大的项目的操作过程,应该即可成为一个合格的嵌入式开发程序员了。辅学材料在图书封底左上方的二维码下载包中,我们精心放置了以下资料:? 《C语言百问百例》和《C++语言百问百例》两套书。? 包含14讲视频的C语言不错教程。? 包含19讲视频的嵌入式LINUX培训计划教程。? 本书源代码。局限和副作用虽然竭力回忆我们成长之初的一些代码编写经验,但遗憾,现在只记得刚开始的时候,编写一个程序,会有满屏的错误需要纠正。至于如何度过这一阶段,在这一阶段积累了哪些经验,现在几乎都不记得了。也就是说,早期时候的代码调试经验,本书基本不具备,因为现在编写代码一般都是一次通过,很少有语法问题,有问题也是隐藏得比较深的运行漏洞。另外,每个人的学习过程差异也很大。我们的作者中,有的英语很好,一看错误提示,很轻松就能解决问题。有的则靠词典,一个一个地解决,C语言编写了一学期,英语水平却提高了不少,这是一种积极的副作用。其次,每一个专业的程序员,到一定的时候,都只专注于自己的问题领域。虽然我们也邀请了高校教师、领域程序员参与到本书的创作中来,但C/C++应用面极广,难免有些见解有所偏颇,尽信书则不如无书,当你通过本书完成阶段过渡后,需要放下本书,寻找新的帮。还有一种C++程序设计学习观点,在面向对象时代,应该先建立面向对象的开发思想,直接学习C++。如工作需要进入嵌入式开发领域,再学习C语言。这种先建立面向对象,然后学习面向过程的思路,我们有一定程度的认同。一方面,我们都是先学习了C语言,然后再学习C++,这方面经验比较丰富。另一方面,我们调研发现,绝大多数高校,依然是保持先学习面向过程的C语言,然后学习面向对象开发语言的教学过程,所以,本书按照大多数读者的学模设计。如果您恰好是先学习的C++,我们建议您先从本书第4篇开始学起。另外,本书的大多数作者没有在大学课堂教学的经验,有些讲解方法,可能没有考虑到读者当前的客观情况,如果你学习本书时有一些困惑,还请读者和我们联系。多人智慧胜一人对于C/C++的学习,除图书之外,我们认为,不断的上机实践是尤为重要的。没有笨学生,只有懒学生。长期的坚持是重要的,这就看个人的毅力了。一个比较好的建议是:如果你是在校的学生,建议你同时再找一个同学,和你一起学习C语言。根据经验,如果有两三个同样爱好的同学一起学习。可以互相竞争、互相促进。而且,有了问题大家互相交流,学起来特别快。当然,更主要的是靠自己,只是有些时候,旁观者清,同学可能可以轻松地发现代码中的问题所在,而我们却要调试半天。如果没有同学或学长一起学习,在网上找一两个牛人请教也特别重要。为了促进本书读者的学习,我们特地在网上提供了一个读者之间交流的群:6900070。同时,在群的共享文件也提一些免费的学习材料,作为本书的补充。欢迎读者在学习过程中下载使用。不积跬步,难行千里在十多年的程序设计学习与实践过程中,有一个同的经让我特别感慨:“大学时候有个同学,爱好编程。大四做设计的时候,发现他水平比我们高一截。因为很多大程序编译和调试的经验,你不去干,是明显不会知道的。有问题我一般都去问他,和他探讨,当然,水平太低的问题他也不感兴趣。有一次我无聊说到这个开发提升过程,夸奖了他一下。他说,哪里,我只是把你们打游戏的时间,用来写代码了。你想想啊,其实我平均一周去三次机房。一学期只有20周比较有空,两年也就80周,240次上机。再说,我家条件也不好,也不能保我有更多的上机费用。两年前我发现学校机房的开放策略后,开始我只能去上机练习一下DOS命令,还有就是C语言书上的小案例。后来想开发一个压缩小工具,不断“折磨”自己,想代码,练习,上机去测试,查资料,代码越写越长,水平才慢慢提高的。你以为我天生就明白exe文件的原理啊,我也是看了多少书,做了很多次试验才明白的。”之所以感慨,因为他的水平提高经历没有什么特别的,就是坚持每周上机3次罢了。但万事贵在坚持,开始可能只能编写一些小程序,只能验一下语法,但量变会产生质变,当你逐渐能快速地写出数千行代码的一个小项目,开发一个小工具。你就已经具备了专业程序员的潜质,你可以很轻松成为一个专业程序员了。而这些不过是要求你按照一定的学习路线,一步一个台阶,坚持就是胜利。大多数时候,完美的学习计划和一时的热情,敌不过长期的坚持。好了,现在方法有了,工具有了,学习材料有了。我们开始逐步来完成学习目标吧!祝你成功!
亲,大宗购物请点击企业用户渠道>小苏的服务会更贴心!
亲,很抱歉,您购买的宝贝销售异常火爆让小苏措手不及,请稍后再试~
非常抱歉,您前期未参加预订活动,
无法支付尾款哦!
抱歉,您暂无任性付资格
