当前位置:首页 > 工业技术
C/C++学习指南  语法篇
C/C++学习指南  语法篇

C/C++学习指南 语法篇PDF电子书下载

工业技术

  • 电子书积分:13 积分如何计算积分?
  • 作 者:邵发编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2016
  • ISBN:9787302419891
  • 页数:377 页
图书介绍:内容涵盖了C/C++中全部主要的语法及核心概念:指针、结构体、类、模板、异常,动态分配内存、动态创建对象、传值与传地址、深拷贝与浅拷贝、单步调试与内存观测、多文件项目编译过程分析、面向对象的程序设计、编码规范,链表、字符串操作、文件操作、ANSI C标准库、STL常用模板类库的用法(vector, list, map, string)... 从最简单的语法到最深刻的概念,言之必详、读之必懂。
《C/C++学习指南 语法篇》目录

第1章 开始学习C/C++ 1

1.1 开发平台 1

1.2 第一个程序 1

1.2.1 代码解析 2

1.2.2 在Windows XP环境下的问题 2

1.2.3 常见的问题 2

1.3 代码与程序 3

1.4 C语言和C++语言 3

第2章 控制台输入与输出 4

2.1 控制台输出 4

2.1.1 输出整数 5

2.1.2 用变量表示整数 5

2.1.3 指定显示宽度 6

2.1.4 输出小数 7

2.1.5 用变量表示小数 8

2.1.6 指定小数点后的位置 8

2.2 控制台输入 8

2.2.1 输入整数 9

2.2.2 输入小数 9

2.2.3 一次输入多个数 10

2.3 注释 11

2.4 空白 12

2.5 常见问题 12

2.6 综合例题 13

第3章 变量与常量 14

3.1 变量 14

3.1.1 变量的定义 14

3.1.2 变量的命名 15

3.1.3 变量的赋值 16

3.2 整型变量 16

3.2.1 char/short/int类型 16

3.2.2 unsigned无符号类型 17

3.2.3 bool布尔类型 18

3.2.4 enum枚举类型 18

3.2.5 long long长整数类型 18

3.3 浮点型变量 18

3.4 数的进制表示 19

3.4.1 数的十进制表示 19

3.4.2 数的十六进制表示 19

3.4.3 数的二进制表示 20

3.5 变量与内存 20

3.5.1 二进制存储 20

3.5.2 内存 21

3.5.3 变量的大小 21

3.5.4 变量在内存中的表示 22

3.5.5 变量的地址 22

3.5.6 理解变量的赋值 23

3.6 const常量 23

3.7 字面常量 24

3.8 常用类型的范围 25

第4章 数组 26

4.1 引例 26

4.2 数组的定义 26

4.2.1 数组的命名 27

4.2.2 数组的长度 27

4.3 数组的基本使用方法 27

4.3.1 数组的初始值 27

4.3.2 访问数组中的元素 28

4.3.3 用sized取得数组的大小 29

4.4 数组的内存视图 29

4.5 常见问题 30

4.6 数组的使用实例 31

4.6.1 实例1 31

4.6.2 实例2 31

4.6.3 实例3 31

4.6.4 实例4 31

4.7 多维数组 32

4.7.1 二维问题的表示 32

4.7.2 二维数组的定义 32

4.7.3 二维数组的初始化 33

4.7.4 二维数组的本质 33

第5章 字符与字符数组 34

5.1 字符是什么 34

5.2 字符的表示 35

5.3 字符的显示 35

5.4 字符常量 35

5.5 字符数组 36

5.5.1 输出字符串 37

5.5.2 输入字符串 37

5.5.3 理解结束符的作用 37

5.5.4 字符串的截断 38

5.5.5 常见问题 38

5.6 转义字符 38

5.6.1 转义字符的概念 38

5.6.2 转义字符的使用举例 39

第6章 表达式与操作符 41

6.1 算术表达式 41

6.2 赋值表达式 42

6.2.1 左值 42

6.2.2 理解赋值运算 42

6.2.3 赋值与算术运算合并 43

6.2.4 等号串连的写法 43

6.3 关系表达式 43

6.4 条件表达式 44

6.5 逻辑表达式 45

6.6 逗号表达式 46

6.7 自增/自减操作符 47

6.8 位操作符 48

6.8.1 按位表示 48

6.8.2 位运算规则 48

6.8.3 移位操作 50

6.8.4 应用举例 51

6.8.5 例题:把unsigned int整数转为4个字节 52

6.9 类型的转换与提升 52

6.10 优先级与结合顺序 53

6.10.1 使用括号 54

6.10.2 常用的优先级 54

第7章 语句 55

7.1 什么叫语句 55

7.2 if语句 56

7.2.1 使用复合语句 57

7.2.2 最简形式if 58

7.2.3 完全形式if…else if…else if…else 59

7.3 switch语句 60

7.3.1 匹配 61

7.3.2 跳转与执行 62

7.3.3 注意事项 62

7.4 for语句 64

7.4.1 引例 64

7.4.2 使用for语句 64

7.4.3 变形1:省略初始表达式 65

7.4.4 变形2:省略第二个表达式 65

7.4.5 变形3:省略后置表达式 66

7.4.6 变形4:全部置空 66

7.4.7 存在break语句 66

7.4.8 存在continue语句 66

7.5 while语句 67

7.5.1 变形:条件判断内置 68

7.5.2 例题 68

7.6 do…while语句 69

7.7 综合例题1 70

7.8 综合例题2 71

第8章 函数 73

8.1 引例 73

8.2 初步认识函数 73

8.3 函数的定义 75

8.3.1 函数名 75

8.3.2 参数列表 75

8.3.3 返回值类型 76

8.3.4 函数的实现 76

8.3.5 return语句的用法 76

8.4 函数的调用 77

8.4.1 函数的调用过程 77

8.4.2 参数的顺序 78

8.4.3 函数的传值调用 78

8.4.4 忽略返回值 79

8.4.5 直接使用返回值 80

8.5 全局变量和局部变量 80

8.6 变量的作用域与生命期 81

8.6.1 变量的作用域 81

8.6.2 变量的生命期 82

8.7 变量名重名问题 82

8.8 函数声明与函数定义 84

8.8.1 函数的声明 85

8.8.2 函数声明相关问题 86

8.9 main函数 86

8.10 参数的隐式转换 86

8.11 函数名重载 87

8.12 重载函数的匹配 88

8.12.1 精确匹配 88

8.12.2 模糊匹配 88

8.13 参数的默认值 90

8.14 内联函数 91

8.15 函数的递归调用 91

第9章 指针 94

9.1 内存地址的表示 94

9.2 指针的概念 94

9.3 星号操作 96

9.4 指针与数组 97

9.4.1 指针加减法 98

9.4.2 指针与数组的转换 98

9.5 指针作为函数的参数 99

9.6 数组作为函数的参数 101

9.7 指针作为函数的返回值 102

9.8 const指针 103

9.9 void型指针 104

9.10 安全地使用指针 105

9.11 二重指针 108

9.12 二维数组与指针 108

9.12.1 作为函数的参数 109

9.12.2 二维数组与指针的转换 109

第10章 结构体 111

10.1 引例 111

10.2 结构体概述 113

10.3 结构体的基本用法 113

10.3.1 变量定义和初始化 113

10.3.2 访问结构体的成员 114

10.3.3 定义结构体数组 114

10.4 结构体的内存视图 115

10.4.1 结构体的成员 115

10.4.2 对齐与填充 116

10.5 结构体的更多用法 117

10.5.1 结构体的赋值 117

10.5.2 结构体指针 117

10.5.3 作为函数的参数 117

10.5.4 作为函数的返回值 118

10.5.5 作为结构体的成员 118

10.6 结构体的特殊写法 119

10.6.1 没有类型名 119

10.6.2 函数内部的结构体类型 119

10.6.3 紧凑的形式 120

10.6.4 C语言中的struct定义 120

10.7 结构体的命名 121

10.8 传值与传地址 121

10.9 位字段bit-field 122

10.10 实例 123

第11章 联合体 125

11.1 概念 125

11.2 进一步理解union 126

11.3 实例 127

11.4 union的替代方案 128

第12章 动态分配内存 130

12.1 引例 130

12.2 动态分配内存 130

12.3 内存管理器与堆 131

12.4 对象的生命期 133

12.5 实例1 134

12.6 实例2 135

12.7 常见问题 136

第13章 链表 138

13.1 概念 138

13.2 链表的构造 138

13.2.1 头节点与末节点 139

13.2.2 链表头的作用 139

13.2.3 常见问题 139

13.3 有头链表 140

13.3.1 概念 140

13.3.2 定义一个有头链表 140

13.3.3 添加一个节点 141

13.3.4 有头链表的遍历 142

13.3.5 按顺序插入节点 142

13.3.6 查找和删除节点 143

13.3.7 和无头链表的比较 143

第14章 引用 144

14.1 引用的定义 144

14.2 与指针的区别 144

14.3 简单的例子 145

14.4 作为函数的参数 146

14.5 作为函数的返回值 147

14.6 const引用 148

第15章 字符串 149

15.1 字符串的三种形式 149

15.2 字符串常量的多行表示 150

15.3 字符串与普通数据 151

15.4 字符串的遍历 151

15.5 字符串长度 152

15.6 字符串复制 153

15.7 字符串比较 154

15.8 字符串插入和删除 155

15.8.1 删除字符 155

15.8.2 插入字符 156

15.8.3 插入和删除的效率问题 156

15.9 字符串的分割 157

15.10 用数组还是用指针 159

第16章 标准C函数库 162

16.1 stdio.h 162

16.2 math.h 164

16.3 time.h 165

16.3.1 time_t 166

16.3.2 struct tm 166

16.3.3 time取得系统当前时间 167

16.3.4 localtime得到年月日时分秒 167

16.3.5 mktime构造时间 168

16.4 stdlib.h 169

16.5 string.h 171

第17章 文件操作 175

17.1 认识文件 175

17.2 保存数据 176

17.2.1 fopen打开文件 176

17.2.2 fclose关闭文件 177

17.2.3 fwrite写入数据 177

17.3 读取数据 177

17.4 数据的存储格式 179

17.5 存储格式:按字节存储 180

17.5.1 指针指向的对象 181

17.5.2 Run-Length Encoding存储 182

17.6 存储格式:文本化存储 183

17.6.1 fprintf按行格式化写入 183

17.6.2 fgets按行读取 184

17.7 文件的随机访问 184

17.7.1 fseek随机访问 184

17.7.2 文件位置指示器 185

17.7.3 随机访问示例 185

17.7.4 fseek的物理限制 186

17.7.5 文件被重复打开的情况 186

17.8 文件打开模式 186

17.9 常见问题 187

第18章 多文件项目及编译过程 188

18.1 extern 188

18.1.1 extern声明全局函数 188

18.1.2 extern声明全局变量 189

18.1.3 深入理解extern 190

18.2 多文件项目的生成 190

18.2.1 第一阶段:编译 190

18.2.2 第二阶段:链接 191

18.2.3 用伪代码表示整个过程 192

18.2.4 全量编译与增量编译 193

18.3 头文件#include指令 193

18.3.1 为什么需要头文件 193

18.3.2 使用头文件 195

18.3.3 # include指令的原理 196

18.3.4 头文件的重复包含问题 196

18.3.5 头文件里的内容 197

18.4 宏定义#define指令 197

18.4.1 #define一个数值 198

18.4.2 #define一个算式 199

18.4.3 几个常见的宏定义 200

18.5 条件编译指令#if 200

18.5.1 #if…#endif 200

18.5.2 #ifdef…#endif 200

18.5.3 解决头文件重复包含的问题 201

18.6 main函数的参数和返回值 202

18.6.1 main函数的参数 202

18.6.2 main函数的返回值 204

18.7 static的用法 204

18.7.1 static修饰变量 204

18.7.2 static修饰函数 205

第19章 面向对象编程 206

19.1 面向对象设计的过程 206

19.2 实例演示 206

19.2.1 需求与设计 206

19.2.2 写出代码框架 207

19.2.3 实现各个函数接口 209

19.3 封装 210

第20章 类 212

20.1 类和成员变量 212

20.1.1 了解访问修饰符 213

20.1.2 访问修饰符的用法 213

20.2 类和成员函数 214

20.2.1 访问修饰符的限制 215

20.2.2 了解this指针 216

20.2.3 this指针的用法 217

20.3 变量名字的覆盖 218

20.4 命名规范 220

20.4.1 类名的命名规范 220

20.4.2 成员函数的命名规范 221

20.4.3 成员变量的命名规范 221

20.5 类的封装 222

20.6 类的分离式写法 223

20.7 const对象与const函数 224

20.7.1 const成员函数 224

20.7.2 const版本与非const版本 224

第21章 构造与析构 226

21.1 引例 226

21.2 构造函数 226

21.2.1 重载构造函数 227

21.2.2 构造函数的调用 227

21.3 析构函数 229

21.3.1 析构函数的调用 229

21.3.2 在析构函数中释放资源 230

21.4 自动生成的构造/析构函数 231

21.5 默认构造函数 232

21.6 构造函数的初始化列表 232

21.6.1 参数名与成员变量名可以相同 233

21.6.2 成员本身也是class类型 233

21.6.3 混合使用两种初始化方式 234

21.6.4 必须使用初始化列表的情形 234

21.7 构造与析构的顺序 235

21.8 分离式写法 236

21.9 无名对象 237

21.10 构造函数与类型转换 237

第22章 动态创建对象 239

22.1 回顾malloc/free 239

22.2 用new/delete创建/销毁对象 240

22.3 new/delete与malloc/free的区别 241

22.4 为new指定初始化参数 241

22.5 默认构造函数的必要性 243

22.6 注意事项 243

第23章 继承 244

23.1 引例 244

23.2 继承的概念 244

23.3 访问修饰符protected 246

23.4 成员函数的重写 247

23.5 虚拟继承 248

23.5.1 父类指针指向子类对象 248

23.5.2 虚函数virtual 249

23.5.3 virtual析构函数 250

23.6 继承关系下的构造与析构 250

23.7 多重继承 251

23.8 继承函数与纯虚类 252

23.9 以protected/ private方式继承 253

第24章 拷贝构造函数 254

24.1 定义 254

24.2 拷贝构造函数的调用 254

24.3 默认的拷贝构造函数 256

24.4 定义拷贝构造函数 256

24.5 深度拷贝 258

第25章 静态成员 260

25.1 static定义全局变量 260

25.2 static定义全局函数 261

25.3 与普通成员的区别 263

25.4 static语法的特点 264

25.5 应用1:实例计数 265

25.6 应用2:单例模式 267

第26章 朋友成员 269

26.1 引例 269

26.2 类的朋友 269

26.3 friend的语法 270

26.4 实例 270

26.5 进一步讨论 271

第27章 重载操作符 273

27.1 引例 273

27.2 算术操作符 274

27.2.1 参数类型 275

27.2.2 加法的互换性 275

27.3 赋值操作符= 276

27.3.1 赋以不同的类型 276

27.3.2 深拷贝 277

27.3.3 相关问题及注意事项 278

27.3.4 检查项列表 279

27.4 自增操作符++与自减操作符—— 279

27.5 关系操作符 280

27.6 逻辑操作符 281

27.7 类型转换操作符 281

27.8 元素操作符[] 282

27.9 输入输出操作符〉〉与〈〈 283

27.10 操作符new与delete 284

27.11 小结 284

第28章 内部类和名字空间 285

28.1 内部类 285

28.1.1 内部类的语法 285

28.1.2 内部类和普通类的区别 286

28.1.3 内部类的用途 286

28.1.4 内部类的分离式写法 286

28.1.5 内部enum类型 287

28.2 名字空间 288

28.2.1 名字空间的定义 288

28.2.2 分离式写法 289

28.2.3 using语句:解除前缀 290

28.2.4 名字空间里的其他类型 291

28.2.5 名字空间的应用场景 291

第29章 模板 292

29.1 函数模板 292

29.2 类模板 294

29.3 模板参数 295

29.4 实例 295

第30章 标准模板库 298

30.1 一般使用方法 298

30.2 向量vector 299

30.2.1 at/front/back 300

30.2.2 push_back/pop_ back/resize/clear 301

30.2.3 it erator/const_ iterator 302

30.2.4 insert/erase 303

30.3 list 304

30.3.1 push_back/pop_back/push_front/pop_front 305

30.3.2 size/clear 305

30.3.3 front/back 305

30.3.4 iterator 306

30.3.5 insert/erase 306

30.4 string 307

30.4.1 append/clear 308

30.4.2 size/capacity/resize/clear/length 308

30.4.3 at 309

30.4.4 字符串比较 309

30.4.5 字符串查找 310

30.4.6 substr 311

30.4.7 insert/replace 311

30.4.8 string作为函数参数 312

30.5 map 313

30.5.1 使用[]插入数据 314

30.5.2 使用insert插入数据 314

30.5.3 查找 315

30.5.4 遍厉 315

30.5.5 删除 315

30.6 stack 316

30.7 queue 316

第31章 异常 317

31.1 一个例子 317

31.1.1 throw 318

31.1.2 try…catch 319

31.2 try的用法 320

31.3 catch的用法 321

31.3.1 匹配所有类型 321

31.3.2 异常必须被捕获 322

31.4 throw的用法 323

31.5 常见问题 324

31.5.1 异常与错误的区别 324

31.5.2 不在构造函数中抛出异常 325

31.5.3 不在析构函数中抛出异常 325

31.5.4 关于finally 325

附录A 用VC2008创建项目 326

附录B 有符号整数与无符号整数 335

附录C 枚举类型 336

附录D VC2008调试方法 338

附录E VS2008常见问题汇总 346

附录F 字面常量 350

附录G ASCII码表 351

附录H 位字段 355

附录I typedef的用法 360

附录J 编码规范 361

附录K C++与C语言的区别 370

附录L 二进制、十进制与十六进制 375

相关图书
作者其它书籍
返回顶部