第1章 机器语言简介 1
1.1计算机组成及工作过程 1
1.2计算机硬件和软件 4
1.3机器语言程序 5
1.4汇编语言 7
1.5深入探讨——存储和算法是一对矛盾体 8
习题 9
第2章 基本数据类型 10
2.1变量与字面值常量 10
2.2整型 15
2.3字符型 16
2.4实型 19
2.5布尔型 20
2.6 typedef名字 20
2.7基本数据类型的深入探讨 20
2.7.1字面值常量的意义 20
2.7.2左值和右值 21
习题 21
第3章 运算符和表达式 22
3.1表达式 22
3.2关系操作符 23
3.3逻辑操作符 23
3.4自增自减操作符 24
3.5赋值和复合赋值操作符 25
3.6条件操作符 26
3.7逗号操作符 27
3.8 复合表达式 27
3.9内部类型转换 27
3.9.1赋值兼容性 27
3.9.2表达式计算中的类型转换过程 28
3.9.3强制类型转换 28
习题 28
第4章 语句组结构 30
4.1选择结构 30
4.1.1 if-else语句 30
4.1.2 switch语句 34
4.2循环结构 35
4.2.1 for语句 35
4.2.2 while语句 37
4.2.3 do-while语句 39
4.2.4循环嵌套 40
4.3其他流程控制语句 40
4.3.1 break语句 40
4.3.2 continue语句 41
习题 41
第5章 指针和数组 43
5.1指针 43
5.1.1指针和间接引用 43
5.1.2指针定义中“*”的位置 47
5.1.3指针加减整数的基本运算 47
5.2数组 48
5.2.1数组变量和数组指针 48
5.2.2变量和长度为1的数组 50
5.2.3数组和指针的关系 51
5.2.4动态数组 52
5.3指针和数组的应用设计举例 52
5.3.1数组元素求和 52
5.3.2求数组最小元素 53
5.3.3选择排序 53
5.4指针和数组的深入讨论 55
5.4.1指针、数组、表达式和左值 55
5.4.2数组变量指针和数组指针 55
习题 55
第6章 函数 57
6.1函数定义与调用 57
6.2值传递和指针传递 61
6.3返回值与指针传递 62
6.4函数声明(原型) 62
6.5函数应用设计举例 64
6.5.1选择排序 64
6.5.2起泡排序 65
6.5.3数制转换 66
6.5.4折半查找 66
6.5.5划分数组元素 67
6.5.6删除重复数据 68
6.5.7筛法求素数 69
6.5.8 Josephus问题 71
6.6函数调用与变量的存储类别 71
6.6.1自动局部变量 72
6.6.2静态局部变量 74
6.6.3外部变量 75
6.6.4寄存器变量 76
6.7 const限定修饰符 77
6.7.1 const型变量 77
6.7.2间接const型指针 78
6.7.3 const型指针 79
6.7.4全const型指针 79
6.8 函数指针 80
6.9递归 81
6.10函数的深入讨论 83
6.10.1作为函数退出点的return语句 83
6.10.2自变量指针不能作为返回值 84
6.10.3函数表达式和左值 84
6.10.4移动下标与移动指针 85
6.10.5数组和指针参数 85
习题 86
第7章 模块化程序设计 87
7.1全局外部函数 87
7.2静态外部函数 88
7.3全局外部变量 89
7.4静态外部变量 90
7.5编译预处理 91
7.5.1无参宏指令 91
7.5.2带参宏指令 91
7.5.3条件编译指令 92
7.5.4文件包含指令 93
7.6模块化应用设计举例——数组的输入/输出、排序和查找 95
习题 96
第8章 C风格串 97
8.1字符串常量和字符串赋值 97
8.2字符串基本操作函数声明 99
8.3字符串基本操作函数实现 99
8.4字符串应用设计举例 102
8.4.1判断回文 102
8.4.2删除空格字符 104
8.5字符串的深入讨论 105
8.5.1特殊字符串 105
8.5.2再论字符串常量 105
习题 105
第9章 结构、联合、枚举 106
9.1结构 106
9.1.1结构定义 106
9.1.2结构变量 107
9.1.3结构变量的初始化和赋值 107
9.1.4结构数组 108
9.1.5结构的嵌套 109
9.1.6结构返回值和指针传递 110
9.2联合 110
9.3枚举 111
9.4结构应用设计举例 113
9.4.1模拟洗牌 113
9.4.2 Date结构 114
9.4.3三天打鱼,两天晒网 118
9.5结构的深入讨论 118
习题 119
第10章 二维数组和指针 121
10.1二维数组与二维数组指针 121
10.2二维数组与一维数组 126
10.3指针数组与二级指针变量(指针的指针) 129
10.4指针数组与二维数组 130
10.5二级指针指向的动态数组空间 132
10.6二维数组和指针的应用设计举例——马鞍点 132
习题 134
第11章 顺序表 135
11.1顺序表的定义 135
11.2顺序表基本运算的实现 137
11.3删除顺序表重复数据 140
11.4数据抽象和准封装 141
习题 143
第12章 单向链表 144
12.1单向链表的定义 144
12.2单向链表基本运算的实现 146
12.3逆置 150
习题 151
第13章 从C到C++的基本内容 152
13.1 C语言本身的问题 152
13.2内联函数 154
13.3运算符重载 155
13.4函数重载 156
13.5引用型 158
13.5.1引用型概念的由来 158
13.5.2引用型的定义和应用 160
13.6提取符和插入符重载 162
13.7默认参数 164
习题 165
第14章 从顺序表到顺序表类 166
14.1顺序表和顺序表类 166
14.2顺序表类基本运算的实现 169
14.3增加的成员函数 170
14.3.1复制构造函数 170
14.3.2复制赋值运算符重载 171
14.3.3下标运算符重载 172
14.4构造函数与初始化 173
14.5类定义 173
习题 174
第15章 从C风格串到String类串 175
15.1 String类的声明 175
15.2 String类基本运算的实现 177
15.2.1构造函数 177
15.2.2成员赋值运算符 179
15.2.3成员转换 180
15.2.4串连接 181
15.2.5关系运算 184
15.2.6求子串 184
15.2.7子串插入 186
15.2.8子串删除 188
15.2.9下标运算符 189
15.2.10字符查找 190
15.2.11输入/输出 190
15.3模式匹配 191
15.4深入讨论 193
15.4.1转换赋值运算符函数的替代 193
15.4.2成员函数“类串+C串”的替代 193
15.4.3 explicit修饰符 194
习题 195
第16章 Date类 196
16.1 Date类的声明 196
16.2 Data类基本运算的实现 199
16.3深入讨论 202
16.3.1转换赋值成员函数的替代 202
16.3.2静态数据成员和静态函数成员 202
习题 204
第17章 继承和动态绑定 205
17.1参数初始化表 205
17.2继承和受保护成员 207
17.2.1继承 207
17.2.2受保护成员 209
17.3多态性和虚函数 209
17.4虚析构函数 211
17.5纯虚函数和抽象类 212
习题 215
第18章 函数模板和向量类模板 216
18.1函数模板 216
18.2顺序表类模板 218
18.3向量类模板Vector 219
18.3.1 Vector定义 220
18.3.2通用算法和迭代器 223
18.3.3 Vector的插入和删除函数 225
18.3.4求素数 226
18.4函数对象 227
18.5深入讨论——函数模板实例化中的问题 228
习题 229
第19章 链表类模板和适配器 231
19.1链表类模板List 231
19.2适配器 237
19.2.1链栈 237
19.2.2链队列 238
19.2.3优先级链队列 238
习题 239
第20章 C++的I/O流库 240
20.1类ofstream、ifstream和fstrearn 241
20.2流模式标志和流成员函数 242
20.3文件和流的关联与解除关联 244
20.4无格式读写 245
20.5格式化输入/输出 246
20.5.1设置流的格式化标志 246
20.5.2格式输出函数 248
20.5.3操作算子 249
20.6文件错误处理 250
习题 251
第21章 C++综合设计实例 252
21.1中缀表达式求值 252
21.2事件驱动模拟 256
习题 263
第22章 命名空间 264
22.1命名空间的定义 264
22.2 using namespace语句 265
22.3命名空间的成员 266
22.4命名空间的别名 267
习题 268
附录A 命名规则 269
附录B 语言操作符的优先级与结合性 270
参考文献 271