阅读(66) (0)

C/C++学习指南(语法篇)

2021-05-21 21:53:52 更新

C/C++学习指南(语法篇)

邵发 著

  • 出版社: 清华大学出版社
  • ISBN:9787302419891
  • 版次:1
  • 商品编码:11858186
  • 品牌:清华大学
  • 包装:平装
  • 开本:16开
  • 出版时间:2015-12-01
  • 用纸:胶版纸


点此购买


编辑推荐

  资深工程师编写,讲述核心的编程问题,规避可能遇到的误区!
  配套视频(约100集)、在线题库(含答案解析)和讨论区,提供充分的示例源码!
  主次分明,前后有序,循序渐进,娓娓道来;C/C++学习指南,让编程变得简单!
  本书的特色是配套了视频教程、在线题库和讨论区。实际上,纸质教材只是整个教学体系的一部分。在本书编写过程中,已经吸收了上千位读者的意见反馈,并总结了大多数读者可能遇到的问题,其具体特点在“前言”部分有详细介绍。读者只需要对照视频,按顺序学习,多加模仿与练习,必能取得良好的学习效果。


内容简介

  这是一部C/C++语言的基础语法教程,面向零基础的初学者。C++是在C语言的基础上做了部分修改和扩展的程序设计语言。本书的前半部分(1~19章)主要是C语言部分,而后半部分(20~31章)则是C++对C语言的扩展。本书从实际工程需要出发,介绍一个C/C++从业人员所必须掌握的全部语法、核心概念和基本技能,消除了学习考试与实际工作之间的差距。书中不仅介绍函数、指针、结构体、类等基本语法,也介绍了传值与传地址、字符串、深拷贝与浅拷贝、动态创建对象、安全地使用指针、面向对象编程思想等核心概念。同时,书中还讲解初级程序员所必须掌握的知识和技术,如单步调试、编码规范、ANSI函数库、文件操作、标准模板库STL的使用。本书配备免费的全套视频教程、在线题库及解析,可结合纸质教材同步使用,书中的近三百个示例的源码,以及所有相关资料均可在http://afanihao.cn上获取。


作者简介

  邵发,毕业于清华大学,从事软件开发工作十余年,拥有C/C++/Java/Linux/DVB/Android/J2EE/Audio&Video Codec等多个领域的技术和项目经验。自2015年起致力于C/C++/Java领域的基础教育,著有“我的编程课堂”系列图书和“C/C++学习指南”、“Java学习指南”系列视频教程,希望借此体系为国内的编程爱好者提供全新、高效、有趣的学习体验。


目录

第1章开始学习C/C++
1.1开发平台
1.2第一个程序
1.3代码与程序
1.4C语言和C++语言
第2章控制台输入与输出
2.1控制台输出
2.2控制台输入
2.3注释
2.4空白
2.5常见问题
2.6综合例题
第3章变量与常量
3.1变量
3.2整型变量
3.3浮点型变量
3.4数的进制表示
3.5变量与内存
3.6const常量
3.7*字面常量
3.8常用类型的范围
第4章数组
4.1引例
4.2数组的定义
4.3数组的基本使用方法
4.4数组的内存视图
4.5常见问题
4.6数组的使用实例
4.7多维数组
第5章字符与字符数组
5.1字符是什么
5.2字符的表示
5.3字符的显示
5.4字符常量
5.5字符数组
5.6转义字符
第6章表达式与操作符
6.1算术表达式
6.2赋值表达式
6.3关系表达式
6.4条件表达式
6.5逻辑表达式
6.6逗号表达式
6.7自增/自减操作符
6.8*位操作符
6.9类型的转换与提升
6.10优先级与结合顺序
第7章语句
7.1什么叫语句
7.2if语句
7.3switch语句
7.4for语句
7.5while语句
7.6do…while语句
7.7综合例题1
7.8综合例题2
第8章函数
8.1引例
8.2初步认识函数
8.3函数的定义
8.4函数的调用
8.5全局变量和局部变量
8.6变量的作用域与生命期
8.7变量名重名问题
8.8函数声明与函数定义
8.9main函数
8.10参数的隐式转换
8.11*函数名重载
8.12*重载函数的匹配
8.13*参数的默认值
8.14*内联函数
8.15*函数的递归调用
第9章指针
9.1内存地址的表示
9.2指针的概念
9.3星号操作
9.4指针与数组
9.5指针作为函数的参数
9.6数组作为函数的参数
9.7指针作为函数的返回值
9.8const指针
9.9void*型指针
9.10安全地使用指针
9.11*二重指针
9.12*二维数组与指针
第10章结构体
10.1引例
10.2结构体概述
10.3结构体的基本用法
10.4结构体的内存视图
10.5结构体的更多用法
10.6*结构体的特殊写法
10.7结构体的命名
10.8传值与传地址
10.9*位字段bitfield
10.10实例
第11章*联合体
11.1概念
11.2进一步理解union
11.3实例
11.4union的替代方案
第12章动态分配内存
12.1引例
12.2动态分配内存
12.3内存管理器与堆
12.4对象的生命期
12.5实例1
12.6实例2
12.7常见问题
第13章链表
13.1概念
13.2链表的构造
13.3有头链表
第14章引用
14.1引用的定义
14.2与指针的区别
14.3简单的例子
14.4作为函数的参数
14.5作为函数的返回值
14.6const引用
第15章字符串
15.1字符串的三种形式
15.2字符串常量的多行表示
15.3字符串与普通数据
15.4字符串的遍历
15.5字符串长度
15.6字符串复制
15.7字符串比较
15.8字符串插入和删除
15.9字符串的分割
15.10用数组还是用指针
第16章标准C函数库
第17章文件操作
17.1认识文件
17.2保存数据
17.3读取数据
17.4数据的存储格式
17.5存储格式: 按字节存储
17.6存储格式: 文本化存储
17.7文件的随机访问
17.8*文件打开模式
17.9*常见问题
第18章多文件项目及编译过程
18.1extern
18.2多文件项目的生成
18.3头文件#include指令
18.4宏定义#define指令
18.5条件编译指令#if
18.6*main函数的参数和返回值
18.7*static的用法
第19章面向对象编程
19.1面向对象设计的过程
19.2实例演示
19.3封装
第20章类
20.1类和成员变量
20.2类和成员函数
20.3变量名字的覆盖
20.4命名规范
20.5类的封装
20.6类的分离式写法
20.7*const对象与const函数
第21章构造与析构
21.1引例
21.2构造函数
21.3析构函数
21.4自动生成的构造/析构函数
21.5默认构造函数
21.6构造函数的初始化列表
21.7构造与析构的顺序
21.8分离式写法
21.9*无名对象
21.10*构造函数与类型转换
第22章动态创建对象
22.1回顾malloc/free
22.2用new/delete创建/销毁对象
22.3new/delete与malloc/free的区别
22.4为new指定初始化参数
22.5默认构造函数的必要性
22.6注意事项
第23章继承
23.1引例
23.2继承的概念
23.3访问修饰符protected
23.4成员函数的重写
23.5虚拟继承
23.6继承关系下的构造与析构
23.7*多重继承
23.8*继承函数与纯虚类
23.9*以protected/private方式继承
第24章拷贝构造函数
24.1定义
24.2拷贝构造函数的调用
24.3默认的拷贝构造函数
24.4定义拷贝构造函数
24.5深度拷贝
第25章静态成员
25.1static定义全局变量
25.2static定义全局函数
25.3与普通成员的区别
25.4static语法的特点
25.5应用1: 实例计数
25.6应用2: 单例模式
第26章朋友成员
26.1引例
26.2类的朋友
26.3friend的语法
26.4实例
26.5进一步讨论
第27章重载操作符
27.1引例
27.2算术操作符
27.3赋值操作符=
27.4自增操作符++与自减操作符--
27.5关系操作符
27.6逻辑操作符
27.7类型转换操作符()
27.8元素操作符[]
27.9输入输出操作符>>与<<
27.10操作符new与delete
27.11小结
第28章内部类和名字空间
28.1内部类
28.2名字空间
第29章模板
29.1函数模板
29.2类模板
29.3模板参数
29.4实例
第30章标准模板库
30.1一般使用方法
30.2向量vector
30.3list
30.4string
30.5map
30.6stack
30.7queue
第31章异常
31.1一个例子
31.2try的用法
31.3catch的用法
31.4throw的用法
31.5常见问题
附录A用VC2008创建项目
附录B有符号整数与无符号整数
附录C枚举类型
附录DVC2008调试方法
附录EVS2008常见问题汇总
附录F字面常量
附录GASCII码表
附录H位字段
附录Itypedef的用法
附录J编码规范
附录KC++与C语言的区别
附录L二进制、十进制与十六进制


前言/序言

  作为一个有十余年软件开发背景的从业人员,作者在招聘面试中发现,现在的绝大多数应聘者往往缺少基本的语法基础和实际的动手能力,更不用说对核心概念的理解了。这似乎表明现有的教材或教育方法,与实际的工作要求之间存在着比较严重的脱节。
  因此,作者希望创建一套全新的、完整的、综合性的教学体系,让学员能够打下牢固的语法基础,建立对核心概念的正确认识,并掌握基本的动手能力。这套体系包含纸质教程、视频教程、在线题库、进阶教程4大要素。
  本书是目标体系的一个组成部分,它也可以独立地使用。就这部纸质教材的特点来说,有以下几点。
  1. 主次分明
  C/C++的语法繁多,有些语法是过时的,有些语法很难但工作中并不常用。为了避免给初学者带来不必要的干扰,书中对非重点的章节采用星号标注,并显式地说明这个章节是不重要的、或者是过时的、或者是第一遍学习的时候可以跳过的。
  2. 引例
  在开始讲解每一章之前,通常会有一个引例,其作用是引起读者对某个背景问题的思考。引例描述了一个语法产生的背景,使读者自然而然地理解本章引入的新概念。
  3. 铺垫与衔接
  本书各章节前后逻辑相承,一环连接一环。读者只要按顺序学习,就可以很容易地从最简单的概念过渡到复杂的概念。最终的效果是,读者会感觉整个学习过程中没有太难的东西。值得强调的是,如果读者不按顺序学习,则学习难度会加倍。例如,如果读者不学习第3、4、5章,则难以读懂第8、9、10章。反之,如果按顺序学习则可以不知不觉地通过。
  本书在编排上注重衔接。例如,第19章起承上启下的作用,使读者可以很容易地从C语言的struct过渡到C++的class。
  4. 动手能力
  第16、17章中介绍了标准C函数库的使用,第30章介绍了标准模板库的使用,它们都是实际工作中所必须掌握、常用而且重要的知识。
  同时,在正文及附录中加强对读者动手能力的培训,强调良好的编码规范,强调自己动手建立项目,并掌握调试技术。
  5. 核心概念
  C/C++中的核心概念包括“传值与传地址”“字符串”“深拷贝与浅拷贝”“动态创建对象”“安全地使用指针”“面向对象编程思想”等。实际上,如果不深刻理解这些核心概念,就无法写出正确的程序。所以,本书在合适的位置讲解了这些概念,使得读者不必再搜寻别的辅导教材,就可以在学习基本语法的同时掌握这些核心概念。
  6. 示例丰富
  本书中给出了近三百个示例,为了保证示例的正确性,每个示例都经过作者验证,并且可以在网站(http://afanihao.cn,可扫描二维码)上获取完整的示例源码。
  7. 丰富的配套资源
  1) 在线题库
  使用在线题库的方式提供习题,习题按四星级标注,一星为基本练习,三星最难,四星为工业级应用题。每题配备提示、答案或解析,使得读者可以检验自己的思路是否合理。
  2) 配套视频
  配套100集免费视频教程,令学习更加高效和轻松。
  3) 源代码下载
  近三百个示例源代码免费共享,轻松编写程序。
  4) 进阶学习
  读者在学习完本书的基本语法之后,可以选择继续学习进阶类教程,使自己具备一个软件开发从业人员的各项基本素质。
  5) 答疑与讨论区
  以在线的形式提供答疑与讨论区,具体信息请在http://afanihao.cn上获取。
  感谢我的父母、姐姐、哥哥,我的爱人和孩子,感谢他们对我的全力支持。
  感谢邵动、邵字红、石广文、李新华、李特梅、姜满如、沈锋平、周建东、郑宇、杨波参与了部分编写工作。
  感谢我的老师,张明凤、王善良、周国林、辛燕君、王守玉、申文甲、王羽、王殿兵、郭全、晋宗华、胡振仙、邹明光、顾秉林、朱小梅、李淑琴、张仰森等在我成长之路上对我的栽培。
  感谢我的朋友,艾本仁、白建峰、陈刚、陈希、丁将、符汪洋、顾元凯、葛国锋、关正伟、刘星、刘庆生、罗晓宇、裴勇、裴郊区、王浩、邵安馨、石天泽、王静竞、杨浩杰、杨猛、杨禹等给我的帮助。
  感谢网友,涂兆昊(神奇的人鱼)、李若滕、伊文斯、张松华(non)、李显发(李小明)、李睿意(lry)、王浩然(连心线)、李显(江南暮春)、卢阿旺(authur)、黄文海(ggev)、神奇海螺、黑夜的忧伤、李泽铭(角逐新梦想)、蔡万成(by)、张强(玄白)、吴霄(stra)、崔祥祥、邓志光等在本教程开发过程中所起的作用。
  邵发
  2015年8月于北七家


点此购买