所有分类
  • 所有分类
  • 在线课堂
  • 精品课程
  • 课件资料
  • 标准资料
  • 资料手册
  • 图纸模型
文档家VIP会员升级

C/C++实践进阶之道:写给程序员看的编程书 陈黎娟 2018年版

C C++实践进阶之道:写给程序员看的编程书  

作者:陈黎娟 

出版时间: 2018年版 

内容简介 

  这是一本C/C++语言应用能力进阶的图书,总结了一个典型的学习者第101个小时开始的学习路线和心得,你值得拥有。 本书内容包括夯实C语言核心基础、提升你的编程功力、积累专业程序员开发经验、理解C++精髓和以C++为母语五个部分,内容丰富,集开发技巧、成长经验和学习资料于一体,具有很高的实用性和可读性,对于初级程序员和学习编程语言的大学生大有裨益,可以帮助其掌握C/C++语言精髓,提高自己的程序设计水平。 

目录 

第1篇夯实C语言核心基础 

第1章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 

2-3程序与源程序17 

2-4源程序与程序设计语言18 

2-5程序设计的基本过程19 

2-6文件和目录19 

2-7理解编码上机调试和步骤22 

2-8C/C++程序员成长经验23 

第一阶段:C语言的学习23 

第二阶段:课程设计和毕业设计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从TurboC到BorlandC++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+2+3+…+100的值57 

4-4-2while语句58 

【示例4-8】利用while循环语句计算1+2+3+…+100的值58 

4-4-3do-while语句58 

【示例4-9】利用do-while循环语句来计算1+2+3+…+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+2+3+…+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最后的综合性代码81 

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 

第10章读源代码,逐步体会算法的力量 

10-1读函数源代码,学技巧116 

10-2体会算法的力量118 

【示例10-1】判断一个自然数n是否是素数119 

10-3算法的三重境界121 

【示例10-2】写一个函数计算当参数为n(n很大)时的值1-2+3-4+5-6+7-…+n121 

【示例10-3】在一个很小的内存空间中,将北京某电话局的8位电话号码排序。号码在 

10000个以内122 

10-4那些C语言必须调试的陷阱123 

第3篇积累专业程序员的开发经验 

第11章烦琐但很重要的变量和类型 

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 

第12章理解数组和指针 

12-1理解指针的本质143 

12-1-1指针变量和变量的指针143 

12-1-2空指针和void指针145 

12-1-3const修饰指针146 

12-2论数组和指针的等价性147 

12-3再论数组和指针的差异性149 

12-3-1字符串数组与字符指针的区别149 

12-3-2当编译器强行把指针和数组混合151 

12-4充满疑惑的数组指针和指针数组152 

第13章常见更要谨慎的字符和字符串 

13-1关于字符编码的讨论155 

13-2请牢记字符串结束标志为‘\\\\0’157 

13-3请务必小心使用memcpy()系列函数159 

【示例13-1】POD对象的复制160 

13-4正确使用字符串处理函数161 

第14章表达式和语句中的陷阱 

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 

第15章函数的秘密 

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返回void195 

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 

第16章正确使用预处理 

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-2-3使用do{}while(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 

第17章非绝对禁止者,皆可使用 

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让逗号操作符派上用场230 

17-4和魔鬼数字说再见230 

17-4-1魔鬼数字带来的麻烦230 

17-4-2给魔鬼数字起一个名字231 

17-5关于循环语句的变化232 

17-5-1新旧标准中for语句的变化232 

17-5-2巧用do循环宏定义233 

17-5-3循环语句的效率234 

第18章程序员应该知道的指针技术 

18-1深刻理解void和void*236 

18-2防微杜渐,拒绝野指针239 

18-2-1野指针产生的原因240 

18-2-2预防野指针的策略241 

18-3“臭名昭著”的空指针到底是什么242 

18-3-1怎样在程序中获得一个空指针243 

资源下载
资源下载
0
文档家VIP会员升级
没有账号?注册  忘记密码?

社交账号快速登录

微信扫一扫关注
扫码关注后会自动登录