《C/C++程序设计教程》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:郭小刚,金星编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2004
  • ISBN:7115119317
  • 页数:383 页
图书介绍:本书结合最新的C/C++标准,对C/C++程序设计语言进行深入浅出的介绍。

第1章 绪论 1

1.1 机器语言、汇编语言和高级语言 1

1.2 C语言的历史与特点 2

1.3 从C语言到C++语言的进化 3

1.4 计算机结构的五个主要单元 3

1.5 C/C++程序的实现 4

1.6 C/C++源程序的基本形式 5

1.7 函数初步 8

1.8 C/C++程序上机步骤简介 11

1.9 小结 12

第2章 基本元素、类型和概念 14

2.1 基本语言元素 14

2.1.1 C/C++中的字符集 14

2.1.2 语言符号 14

2.2 基本数据类型 16

2.3 算术负运算与补码转换 18

2.4 常数和数据的内存布局 21

2.5 sizeof运算符 26

2.6 变量 27

2 7 格式化输出函数printf和输入函数scanf 29

2.7.1 输出函数printf 29

2.7.2 输入格式转换函数scanf 33

2.8 const量或不变量 35

2.9 变量的引用(C++特有) 36

2.10 typedef类型声明语句 37

第3章 运算符与表达式 39

3.1 运算符与表达式概述 39

3.2 左值和右值 40

3.3 运算符的优先级与结合性 40

3.4 算术运算表达式 41

3.5 混合运算时数据的类型转换 42

3.5.1 强制类型转换 42

3.5.2 常用的算术转换 43

3.5.3 隐含类型转换 44

3.6 赋值表达式和混合赋值 45

3.7 算术复合赋值表达式 47

3.8 自增与自减运算符表达式 49

3.9 号运算符表达式 50

3.10 表达式的副作用 51

3.11 位操作运算符(多学时) 52

第4章 逻辑运算和选择控制语句 56

4.1 语句概述 56

4.2 C++中特有的输入输出流 58

4.3 逻辑判断 60

4.3.1 关系运算符 60

4.3.2 逻辑运算符 61

4.4 选择语句 63

4.4.1 单路分支if语句 63

4.4.2 路分支if-else语句 65

4.4.3 if-else语句或if语句的嵌套 66

4.4.4 if-else if-else语句 67

4.4.5 条件运算符 69

4.5 switch语句 70

第5章 循环控制 73

5.1 while语句 73

5.2 do-while语句 74

5.3 for语句 76

5.4 break语句与continue语句 78

5.5 goto语句 80

5.6 多重循环 81

第6章 指针与数组 83

6.1 指针的概念 83

6.2 一级指针和指针的操作 84

6.3 指针与间接变量 85

6.4 一维数组 86

6.4.1 一维数组的定义 87

6.4.2 一维数组的初始化 87

6.4.3 一维数组的内存映像和指针加减关系运算 88

6.4.4 函数的数组形参和指针形参 91

6.5 const指针 93

6.6 二维数组 95

6.6.1 二维数组的定义 95

6.6.2 二维数组的初始化 97

6.6.3 多维数组 97

6.7 指向数组的指针 98

6.8 级指针 101

6.9 指针数组 102

6.10 void关键字与void*型的指针 105

6.11 程序动态存储结构 107

6.11.1 C++中new运算符和delete运算符 107

6.11.2 C语言中的动态内存分配函数malloc和free函数 108

6.12 指针的类型转换和匹配关系(知识拓展) 111

6.13 下标表达式与访问指针寻址计算(知识拓展) 113

第7章 程序的结构 116

7.1 程序设计方法 116

7.1.1 自顶向下的程序设计 116

7.1.2 自底向上的程序设计 118

7.1.3 结构化程序设计 118

7.1.4 多文件结构 119

7.2 作用域或范围scope 119

7.3 可见性与名称隐藏 122

7.4 生存期与存储属性 123

7.5 extern关键字与外部连接属性 124

7.6 static关键字与内部连接属性 125

7.6.1 静态函数或内部函数 125

7.6.2 静态全局变量和静态局部变量 126

7.7 返回指针值的函数与生存期 127

7.8 枚举 130

第8章 函数 134

8.1 函数与调用约定 134

8.2 数的总体概念 135

8.2.1 函数的返回类型 136

8.2.2 函数的定义 136

8.2.3 函数原型 137

8.2.4 return语句 138

8.2.5 函数的使用 139

8.3 内联函数(inline function) 140

8.4 引用和数值传递方式具体比较 141

8.5 函数重载——function overloading(C++特有) 143

8.5.1 重载函数与名称细分 143

8.5.2 函数虚实结合类型匹配(知识拓展) 145

8.5.3 连接C语言中的程序模块(查阅) 146

8.6 默认参数——default argument values(C++特有) 147

8.7 函数的调用机制(多学时) 148

8.8 函数的嵌套与递归 150

8.9 数组的排序和查找(根据学时酌情选讲) 152

8.9.1 直接插入排序 152

8.9.2 选择排序 153

8.9.3 交换法实现冒泡排序 154

8.9.4 二分查找 155

第9章 函数指针 157

9.1 函数指针的定义 157

9.2 函数指针的使用 158

9.3 函数指针作为形参 159

9.4 typedef关键字、函数指针与重载函数(多学时) 163

9.5 函数指针构成的数组(多学时) 164

第10章 预处理过程 168

10.1 编译预处理指令概述 168

10.2 预处理指令#include 169

10.3 #define指令 169

10.3.1 #undef取消标识符定义 169

10.3.2 不带参的宏替换 169

10.3.3 带参的宏定义 172

10.4 宏调用和内联函数(知识拓展) 173

10.5 条件编译指令(多学时) 174

10.6 字符串预处理操作符(多学时) 177

第11章 字符和内存处理 180

11.1 字符数组、指针和字符串的初始化作用 180

11.2 strlen函数确定字符串有效长度 185

11.3 strcpy函数拷贝字符串 186

11.4 strcat函数合并字符串 187

11.5 strcmp函数比较字符串 187

11.6 字符串排序算例 188

11.7 memcpy函数拷贝内存 189

11.8 程序的入口函数main 190

第12章 结构与联合 193

12.1 结构的声明和结构变量 193

12.2 结构变量的定义形式 194

12.3 对结构数据的操作 195

12.4 结构变量的内存分布 197

12.5 结构的初始化 198

12.6 结构与函数 200

12.7 结构的组合 202

12.8 单链表(多学时) 204

12.8.1 单链表概述 204

12.8.2 链表结构的建立 204

12.8.3 动态建立堆中链表 207

12.8.4 对链表的插入 208

12.8.5 链表结点的脱离 211

12.9 联合union 213

12.9.1 联合的特性和定义 213

12.9.2 联合的内存映像 215

12.9.3 无名联合(知识拓展) 217

12.10 数据的引用类型转换(知识拓展) 219

12.11 位域或位字段(查阅) 221

第13章 文件 223

13.1 文本流和二进制流 223

13.2 流文件 224

13.3 文件的打开函数fopen和关闭函数fclose 225

13.4 格式读写fprintf和fscanf函数 227

13.5 出错的测试或清除函数(feof, ferror,clearerr) 229

13.6 字符和字符串读写函数 229

13.6.1 读取单个字符的fgetc函数 229

13.6.2 存写单个字符的fputc函数 230

13.6.3 按行读文本串fgets函数 230

13.6.4 按行写文本串fputs函数 231

13.7 无格式转换的读写函数fread和fwrite 231

13.8 文件的定位 233

13.8.1 ftell函数告知当前位置 234

13.8.2 fseek函数探寻文件的位置 234

13.8.3 rewind函数反绕到文件开头位置 234

13.9 一个简单的读写存盘程序 235

第14章 迈入面向对象编程部分 239

14.1 面向对象理论鸟瞰 239

14.2 面向对象程序设计的概念 240

14.3 面向过程和面向对象编程 241

14.4 类的声明 243

14.5 对象的定义 244

14.6 成员函数与this关键字 245

14.7 类作用域和成员的访问 246

14.8 内联成员函数 249

14.9 前置说明(forword reference) 249

14.10 函数的接口转换(知识拓展) 250

第15章 特殊的成员函数 253

15.1 构造函数(constructor) 253

15.1.1 构造函数的特殊性 253

15.1.2 拷贝构造函数和无参构造函数 254

15.1.3 缺省构造函数 255

15.2 构造函数的调用 255

15.2.1 对象名调用 256

15.2.2 new运算符调用 257

15.2.3 无名对象调用 257

15.2.4 函数对象名语法算例 257

15.3 对象数组的初始化 258

15.4 析构函数(destructor) 259

15.5 赋值运算符函数operator= 261

15.6 成员函数重载 262

15.7 缺省参量的成员函数 263

15.8 编译器默默提供的成员函数(知识拓展) 264

第16章 数据的共享和流通 266

16.1 浅拷贝和深拷贝(shallow copy和deep copy) 266

16.2 只读成员函数与volatile、mutable关键字 268

16.3 友元(friend) 270

16.3.1 友元函数 271

16.3.2 友元类 272

16.4 静态成员 273

16.4.1 静态数据成员 273

16.4.2 静态成员函数 274

16.5 指向成员的指针(多学时) 276

16.5.1 指向数据成员的指针 276

16.5.2 指向成员函数的指针 277

第17章 运算符重载 280

17.1 运算符重载的概念 280

17.2 禁止重载的运算符 281

17.3 运算符重载的规则 282

17.4 单目运算符函数 282

17.5 目运算符函数 284

17.6 数据的类型转换 285

17.6.1 单参数构造函数的类型转换 286

17.6.2 explicit关键字抑制自动类型转换 286

17.6.3 运算符类型转换函数 287

17.7 自增运算符和自减运算符 288

17.8 函数调用运算符()函数(多学时) 290

17.9 访问成员运算符->(多学时) 291

17.10 数组下标运算符[](多学时) 292

17.11 枚举类变量的运算性质(查阅) 294

第18章 组合和继承 296

18.1 组合 296

18.1.1 组合的概念 296

18.1.2 引用型成员和const成员 296

18.1.3 嵌入对象的初始化 297

18.1.4 冒号初始化语法 298

18.2 继承和派生 299

18.2.1 继承的概念 299

18.2.2 间接基类和间接派生类 300

18.3 派生类的声明和对象定义 300

18.4 派生类的三种继承方式 301

18.5 继承和不继承的语义 302

18.6 派生与继承的算例 303

18.7 构造和析构的次序 304

第19章 多态和虚函数 307

19.1 函数覆盖和函数重载 307

19.2 虚函数的声明 308

19.3 多态类层次之间的适应关系 308

19.3.1 对象赋值兼容规则 308

19.3.2 静态类型和动态类型 309

19.4 静态联编和动态绑定 309

19.5 名称索引的优先级 311

19.6 虚函数动态绑定调用算例 312

19.7 虚拟析构函数 314

19.8 纯虚函数和抽象类 315

第20章 模板 318

20.1 模板的概念和方法 318

20.2 函数模板 319

20.2.1 函数模板的机制 319

20.2.2 函数模板的声明 319

20.2.3 函数模板的实现 319

20.3 函数模板和函数重载算例 320

20.4 非模板的重载函数 321

20.5 类模板 322

20.5.1 类模板的声明 322

20.5.2 类模板成员函数的描述 322

20.5.3 类模板的具体实现 323

20.5.4 类模板的成员函数显式实现 324

20.6 类模板的默认参数 324

第21章 异常处理技术 326

21.1 异常处理的概况 326

21.2 C++异常处理的途径 327

21.3 异常的多路捕获 330

21.4 异常的重新抛出 331

21.5 对象的清理 332

21.6 类层次的异常处理策略 334

21.7 关于抛出异常的函数显式说明(查阅) 337

第22章 多重继承和类型变换 338

22.1 多个直接基类 338

22.2 虚拟基类 340

22.3 多继承的构造函数 341

22.4 名称的二义性 344

22.5 新的类型变换(查阅) 345

22.5.1 dynamic_cast动态类型变换 346

22.5.2 static_cast静态类型变换 348

22.5.3 reinterpret_cast重新翻译变换 350

22.5.4 const_cast松动const属性变换 350

22.5.5 typeid关键字 351

第23章 C++的输入输出类库 355

23.1 iotream类层次概述 355

23.2 关于C++的新类 356

23.3 流对象的输入输出重载函数 356

23.4 重载流插入运算符和流提取运算符 358

23.5 格式化的输入输出 359

23.5.1 操作算子(manipulator)的概念 359

23.5.2 整数转换的操作算子hex,oct,dec 359

23.5.3 自定义操作算子 360

23.5.4 格式化标志值 360

23.5.5 控制浮点精度 361

23.5.6 浮点数和科学计数法 362

23.5.7 字符填充和宽度、对齐控制 363

23.6 流对象磁盘文件的输入输出 364

23.6.1 文件的打开函数 364

23.6.2 文件的关闭函数close 365

23.6.3 测试状态的函数(bad,eof,good,clear等) 366

23.6.4 字符和字符串读写函数 367

23.7 无格式转换的读写函数read和write 368

23.7.1 read读取函数 368

23.7.2 write存写函数 369

23.8 文件的定位 370

第24章 名称空间和嵌套类(查阅) 372

24.1 名称空间(namespace) 372

24.1.1 固有的名称空间 372

24.1.2 namespace构建名称空间 373

24.1.3 using声明语句 374

24.1.4 名称空间的分散布置 375

24.1.5 名称空间的歧义性 376

24.1.6 嵌套的名称空间 377

24.1.7 名称空间的别名 377

24.1.8 无名的名称空间 378

24.2 嵌套类 379

24.3 友元函数和嵌套类 381

附录 ASCII码表 383