引言 1
第一部分 Miscrosoft C/C++编程环境第一章 C和C++引论 4
1.1 本章内容 4
1.2 C的来历 4
1.3 C的优点 4
1.4 面向对象编程(OOP) 5
1.5 C4+的来历 6
1.6 图形用户界面(GUI) 7
1.7 Windows 3.1版 7
1.8 小结 8
第二章 C++程序的结构与风格 9
2.1 本章内容 9
2.2 一个典型的C++程序 9
2.3 变量名 9
2.4 语句 11
2.5 注释 11
2.6 函数 12
2.7 函数的调用 13
2.8 函数声明语句 13
2.9 变量的声明 13
2.10 变量的初始化 14
2.11 编译器指令#define和#include 14
2.12 怎样用C++显示结果 14
2.13 编程风格 15
2.14 小结 16
第三章 编程环境 17
3.1 本章内容 17
3.2 什么是编程环境 17
3.3 源程序的编辑 17
3.4 源程序的连接 18
3.5 程序的连接 18
3.6 制作工具 18
3.7 调试工具 19
3.8 其它软件工具 19
3.9 Microsoft C/C++7编译器 20
3.10 程序测试平台(PWB) 20
3.10.1 工程文件 20
3.10.2 PWB 21
3.11 小结 21
第四章 入门知识 22
4.1 本章内容 22
4.2 Microsoft C/C++7编译器的硬件要求 22
4.3 Microsoft C/C++7的安装 22
4.3.1 定制安装对话框 23
4.3.2 安装的完成 27
4.3.3 安装的修改 27
4.4 PWB的执行和编辑 27
4.5 源文件的编辑 29
4.5.1 新的源文件的创建 29
4.5.2 编辑器的使用 30
4.5.3 编辑和连接 33
4.6 第一个C++程序的运行 33
4.7 小结 34
第五章 PWB速成 36
5.1 本章内容 36
5.2 PWB屏幕 36
5.2.1 窗口大小的重设 37
5.2.2 窗口的移动 37
5.2.3 窗口的各个元素 37
5.2.4 状态条 37
5.2.5 PWB菜单条 38
5.2.6 对对话框的响应办法 40
5.2.7 文件菜单 42
5.2.8 编辑菜单(Edit Menu) 44
5.2.9 Search菜单 48
5.2.10 Project(工程文件)菜单 53
5.2.11 Run菜单 57
5.2.12 Options菜单 59
5.2.13 Browse菜单 74
5.2.14 Windows菜单 83
5.2.15 Help(帮助)菜单 86
5.3 小结 87
第二部分 C和C++的基本特性第六章 数据类型 90
6.1 本章内容 90
6.2 变量和常量 90
6.3 变量类型 91
6.3.1 整型变量 91
6.3.2 浮点型变量 93
6.3.3 字符型变量 94
6.4 常量 94
6.4.1 数字常量 94
6.4.2 字符常量 96
6.4.3 字符串常量 97
6.4.4 字符串并置 98
6.4.5 符号常量 98
6.5 常量限定符const 98
6.6 变量及常量类型实例 99
6.7 数组 100
6.7.1 什么是数组 101
6.7.2 数组的声明 101
6.7.3 多维数组 103
6.8 变量的可见性 104
6.8.1 局部变量 104
6.8.2 外部变量 107
6.8.3 静态变量 110
6.8.4 作用域限定操作符(∷) 110
6.9 小结 111
第七章 输入和输出 112
7.1 本章内容 112
7.2 流和重定向 112
7.3 C++的屏幕输出 113
7.3.1 cout对象的插入操作符(<<) 113
7.3.2 级连输出 114
7.3.3 put()和write()成员函数 115
7.3.4 输出的格式 116
7.4 C++的键盘输入 123
7.4.1 输入流的操作符 125
7.4.2 C++的get()和getline()成员函数 126
7.5 C语言的屏幕输出 127
7.5.1 printf()函数 127
7.5.2 puts()函数 130
7.6 C语言的键盘输入 131
7.6.1 scanf()函数 131
7.6.2 gets()函数 132
7.6.3 getchar()函数 132
7.6.4 scanf()函数和gets()函数的用法 132
7.7 C语言的标准I/O头文件(stdio.h) 133
7.8 小结 134
第八章 操作符和表达式 135
8.1 本章内容 135
8.2 算术操作符 135
8.3 关系操作符 136
8.4 逻辑操作符 137
8.5 赋值操作符 138
8.6 增量和减量操作符 139
8.7 地址操作符 141
8.8 逗号操作符 142
8.9 操作符重载 142
8.10 左值和右值 143
8.11 优先级 143
8.12 小结 147
第九章 判断语句 148
9.1 本章概要 148
9.2 语句和语句块 148
9.3 条件语句 149
9.4 switch语句 155
9.5 小结 157
第十章 循环语句 158
10.1 本章概要 158
10.2 while语句 158
10.3 do—while语句 163
10.4 break语句 169
10.5 continue语句 170
10.6 goto语句 170
10.7 小结 171
第十一章 高级数据结构 172
11.1 概述 172
11.2 指针 172
11.2.1 指针的说明 174
11.2.2 指针的使用 175
11.2.3 指针的运算 178
11.3 结构 182
11.3.1 结构的说明 182
11.3.2 结构的初始化 184
11.3.4 结构中成员的引用 184
11.4 类型定义关键字 187
11.5 寄存器变量 188
11.6 枚举数据类型 188
11.7 数据转换 189
11.8 类型强制转换 192
11.9 空闲存储—内存分配操作符 193
11.10 new操作符 193
11.11 delete操作符 197
11.12 小结 197
第十二章 函数 198
12.1 概述 198
12.2 main()函数 198
12.3 函数的剖析 200
12.3.1 返回类型 200
12.3.2 函数名 200
12.3.3 函数表和参数说明 200
12.3.4 函数体 201
12.3.5 返回值 201
12.3.6 调用函数 202
12.3.7 返回值的使用 202
12.3.8 无参函数 202
12.3.9 参数的传递 203
12.4 原型 205
12.4.1 无参原型 206
12.4.2 未说明参数数目的原型 206
12.4.3 缺省函数参数的原型 206
12.4.4 多源文件中函数的可见性 207
12.5 递归 208
12.6 作用域 209
12.6.1 程序作用域 209
12.6.2 源文件作用域 209
12.6.3 函数作用域 210
12.6.4 块作用域 210
12.7 嵌入函数 210
12.8 函数多态(函数重载) 212
12.9 引用变量 215
12.9.1 引用变量的创建 215
12.9.2 使用引用变量作为函数参数 216
12.9.3 指针和引用 218
12.9.4 返值引用的使用 218
12.9.5 引用结构的使用 219
12.10 函数库 222
12.11 小结 224
第三部分 C和C++的高级特性第十三章 其他操作符 226
13.1 概述 226
13.2 位操作符 226
13.3 移位操作符 226
13.4 逻辑位操作符 228
13.5 条件操作符 233
13.6 sizeof操作符 233
13.7 小结 234
第十四章 指针 235
14.1 概述 235
14.2 指针的说明 235
14.3 简单的指针 236
14.4 字符串常量 238
14.5 指针的指针 238
14.6 指针和数组的进一步关系 242
14.7 作为函数参数使用的指针 244
14.8 函数指针 244
14.8.1 说明 245
14.8.2 函数指针的赋值 245
14.8.3 使用函数指针调用函数 245
14.8.4 作为函数参数使用的函数指针 246
14.9 函数指针数组 247
14.10 结构指针 249
14.11 小结 251
第十五章 结构和联合 252
15.1 概述 252
15.2 结构的定义&. 252
15.3 结构的说明 252
15.4 结构的初始化 253
15.5 结构成员的引用 253
15.6 结构数组 253
15.7 作为函数参数的结构 255
15.8 结构的返回值 256
15.9 嵌套结构的使用 256
15.10 结构赋值语句的使用 258
15.11 链表 259
15.12 链表的应用 259
15.12.1 分析 259
15.12.2 设计 260
15.12.3 实施 262
15.13 位域 274
15.14 联合 276
15.15 小结 278
第四部分 C++的面向对象特性第十六章 类 280
16.1 面向对象编程(OOP) 280
16.2 面向对象的优点 281
16.3 数据类型 281
16.4 C++的类 283
16.4.1 声明一个类 283
16.4.2 成员函数的声明和定义 284
16.4.3 构造函数和析构函数 286
16.4.4 公用及私有标签 286
16.4.5 类的使用 288
16.4.6 对象的创造和删除 289
16.4.7 成员函数的一点补充 290
16.4.8 访问函数 290
16.4.9 构造函数的缺省 291
16.4.10 对象和常量关键字 293
16.4.11 对象数组 294
16.4.12 对象中的对象 294
16.4.13 类使用举例 299
16.5 小结 304
第十七章 类使用内存 305
17.1 空闲内存和对象 305
17.2 给成员指针分配内存 305
17.3 重载赋值操作符 309
17.4 指针“this” 310
17.5 类对象数组的动态分配 313
17.6 拷贝构造函数 315
17.7 The set_new_handler函数 316
17.8 重载new和delete操作符 318
17.9 小结 320
第十八章 进一步使用类 321
18.1 静态数据成员 321
18.2 静态成员函数 324
18.3 友元 324
18.3.1 友元类 325
18.3.2 友元函数 336
18.4 操作符重载 337
18.4.1 重载操作符支持复数 338
18.4.2 何时可使用操作符重载 341
18.4.3 用友元函数重载操作符 344
18.4.4 重载插入操作符(<<) 346
18.5 转换 347
18.5.1 使用构造函数设计转换 348
18.6 小结 352
第十九章 继承 353
19.1 关于本章 353
19.2 动物园问题 354
19.3 派生一个类 357
19.3.1 Protected关键字 360
19.3.2 私用的派生 360
19.3.3 执行一个派生类 360
19.3.4 派生类的使用 368
19.4 扩展继承 370
19.5 重新定义基类成员函数 372
19.6 基类对象与派生类对象间的转换 373
19.7 指向基类的指针 374
19.8 动态联编与虚函数 375
19.8.1 什么是虚函数 375
19.8.2 虚函数的使用 376
19.8.3 纯虚函数 382
19.9 析构函数重访 383
19.10 多继承 384
19.11 小结 385
第二十章 文件输入与输出 386
20.1 关于本章 386
20.2 文件介绍 386
20.3 文件I/O选择 387
20.4 iostream类层次 387
20.5 打开与关闭文件 388
20.6 读和写一个文本文件 391
20.7 文件输入/输出技术 393
20.7.1 读和写一个字符 393
20.7.2 读和写一行 394
20.7.3 读和写一个数据块 396
20.8 将磁盘文件地址簿保存并取回 398
20.9 随机文件输入/输出操作 401
20.9.1 放置指向文件的指针 401
20.9.2 与随机访问文件I/O一起使用的成员函数 402
20.9.3 用随机存取I/O做搜索操作 405
20.10 使用C语言标准文件I/O运行时库函数 410
20.10.1 打开和关闭一个文件 410
20.10.2 读和写一个文本文件 411
20.10.3 用C语言ANSI I/O的文件输入/输出技术 412
20.10.4 低层文件输入和输出操作 413
20.11 错误处理与状态函数 415
20.12 放置文件指针 416
20.13 低层文件指针的放置 417
20.14 C运行时库函数总结 417
20.15 小结 418
第二十一章 编译器指令 419
21.1 关于本章 419
21.2 编译器指令的语法 419
21.3 C/C++预处理器 419
21.4 #include指令 420
21.5 #define指令 421
21.5.1 简单文本替换 421
21.5.2 类似于函数的宏 423
21.6 #define指令 425
21.7 条件指令 425
21.8 pragma指令 427
21.9 小结 428
第二十二章 一般编程错误 429
22.1 关于本章 429
22.2 C和C++中不太明显的错误 429
22.3 数组中的错误 430
22.3.1 错误地使用数组下标 430
22.3.2 错误地使用多维数组 431
22.3.3 越出数组结尾 431
22.4 有关大括号的错误 431
22.5 注释错误 431
22.5.1 注释边界符不对称 432
22.5.2 试图注释嵌套 432
22.5.3 将C注释转换为C++注释 432
22.6 函数错误 432
22.6.1 未能对运行时函数包含一个头文件 432
22.6.2 未检查返回值 433
22.6.3 通过值传递方式而不是引用方式来传递一个参数 433
22.7 if-else语句中的错误 434
22.8 关于宏的错误 435
22.8.1 对似函数宏的说明无效 435
22.8.2 宏参数中省略了括号 435
22.8.3 由于宏参数的副效应而出错 436
22.9 算符错误 437
22.9.1 错误地使用加一算符和减一算符 437
22.9.2 使用错误的算符 437
22.9.3 未考虑操作符的优先次序 437
22.10 指针错误 438
22.10.1 声明指针类型的错误 438
22.10.2 未初始化指针 439
22.10.3 遗漏地址操作符(&) 439
22.11 分号的错误 440
22.11.1 在语句结尾漏了分号 440
22.11.2 分号位置不对 440
22.11.3 结束预处理器指令时用了分号 440
22.12 串错误 441
22.12.1 没有为串分配内存 441
22.12.2 单引号与双引号互相混淆 441
22.12.3 未估计到串的实际长度 441
22.13 Switch语句中的错误 442
22.14 小结 443
第二十三章 动态调试 444
23.1 关于本章 444
23.2 动态调试 444
23.2.1 语法错误 444
23.2.2 逻辑错误 444
23.2.3 回归错误 444
23.2.4 潜藏的错误 445
23.3 在设计过程中进行动态调试 445
23.3 Microsoft C/C++7代码观察动态调试软件 445
23.3.1 字计数程序(WC.CPP) 445
23.3.2 发现并修改语法错误 448
23.3.3 使用代码观察来发现逻辑错误 450
23.3.4 代码观察的动画特性 453
23.3.5 代码观察用户界面的总结 454
23.4 小结 461
附录A ASCII代码字符集 462