第1章 语言概述 1
1.1C语言的历史 1
1.1.1C的出现 1
1.1.2C和C的关系 3
1.2面向对象程序设计的基本思想 4
1.2.1面向对象的由来和发展 4
1.2.2面向对象的要素 4
1.2.3面向对象的技术 5
1.2.4C对面向对象的支持 6
1.3C程序的结构 8
1.3.1C语言的词法规则 8
1.3.2C程序的基本结构 11
1.3.3输入和输出 13
1.4C程序的实现 15
1.4.1C程序的处理过程 15
1.4.2MicrosoftVisualC6.0的工作环境 18
1.4.3一个设计实例 19
本章小结 21
习题 21
第2章 数据类型、运算符和表达式 23
2.1基本数据类型 23
2.1.1变量 23
2.1.2整数型 25
2.1.3浮点型 26
2.1.4字符和字符串 28
2.1.5枚举型 30
2.2结构数据类型 34
2.2.1结构体 34
2.2.2联合体 39
2.2.3数组 42
2.2.4用typedef定义数据类型 46
2.3运算符 47
2.3.1算术运算符 47
2.3.2关系运算符 49
2.3.3逻辑运算符 50
2.3.4位操作运算符 51
2.3.5赋值运算符 52
2.3.6其他运算符 53
2.3.7运算符的优先级和结合性 56
2.4表达式 58
2.4.1表达式的种类 58
2.4.2表达式的值和数据类型 59
2.5预处理命令 65
2.5.1不带参数的宏 65
2.5.2带参数的宏 68
2.5.3文件包含命令 71
2.5.4条件编译命令 73
2.5.5常量 76
本章小结 77
习题 78
第3章 语法和语句 82
3.1表达式语句 82
3.2if语句 82
3.2.1if语句 82
3.2.2if语句的嵌套 85
3.2.3if语句和条件运算符 87
3.3switch语句 88
3.3.1switch语句 88
3.3.2嵌套的switch语句 91
3.4while和do-while语句 91
3.4.1while语句 91
3.4.2do-while语句 92
3.5for语句 93
3.5.1for语句 93
3.5.2for语句的变化形式 95
3.5.3无限循环 96
3.5.4没有循环体的for语句 97
3.6转移语句 97
3.6.1return语句 97
3.6.2goto语句 98
3.6.3break语句 98
3.6.4continue语句 99
3.7程序举例 100
3.8本章小结 104
习题 105
第4章 指针和引用 107
4.1指针的概念 107
4.2基本指针 108
4.2.1字符指针 108
4.2.2指针与数组 111
4.3指针数组 113
4.3.1指针数组的定义和运用 113
4.3.2NULL指针 117
4.4const指针 118
4.4.1指向常量的指针 119
4.4.2指针常量 120
4.5堆内存分配 121
4.5.1堆内存 121
4.5.2new和delete操作符 124
4.5.3内存丢失 125
4.6指针与函数 125
4.6.1传递数组的指针性质 125
4.6.2使用指针修改函数参数 126
4.6.3指针函数 128
4.7用指针处理链表 129
4.7.1链表的建立和输出 130
4.7.2链表的删除和插入 133
4.8引用 136
4.8.1独立引用 136
4.8.2引用参数 137
本章小结 141
第5章 函数和作用域 142
5.1函数的定义 142
5.1.1函数的定义格式 142
5.1.2函数的返回值 144
5.1.3函数的参数 144
5.2函数指针 148
5.2.1函数指针的定义 148
5.2.2函数指针的使用 149
5.3函数的调用和递归 151
5.3.1函数调用方式 151
5.3.2赋值调用和赋地址调用 153
5.3.3递归函数 154
5.4内联函数 155
5.4.1内联函数的概述 155
5.4.2内联函数的使用 157
5.5函数重载 159
5.6作用域 162
5.6.1作用域的种类 162
5.6.2标识符的作用域规定 163
5.6.3局部变量和全局变量 164
5.6.4变量的作用域和存储类 167
5.6.5单目作用域运算符 169
5.6.6内部函数和外部函数 170
5.7函数原型 173
5.8C系统函数 175
5.8.1C系统函数概述 175
5.8.2字符串处理函数 177
本章小结 181
习题 181
第6章 类和对象 183
6.1类的定义 183
6.1.1类的定义格式 183
6.1.2类的作用域 188
6.1.3定义类的注意事项 190
6.2对象的定义 193
6.2.1对象的定义格式 194
6.2.2对象成员的表示法 194
6.2.3对象指针和对象引用 196
6.2.4子对象和堆对象 204
6.2.5对象的生存期 210
6.3对象的初始化 212
6.3.1构造函数 213
6.3.2析构函数 228
6.4对象的成员 235
6.4.1内联函数 235
6.4.2静态成员 236
6.4.3常数据成员和成员函数 245
6.4.4友元函数和友元类 252
6.5类型转换 257
6.5.1数据类型的转换 258
6.5.2构造函数的转换功能 260
6.5.3转换函数 261
习题 262
第7章 继承性和派生类 271
7.1基类和派生类 271
7.1.1继承类的定义格式 271
7.1.2三种继承方式 272
7.1.3基类和派生类的关系 274
7.2单继承 275
7.2.1单继承的访问权限控制 275
7.2.2单继承的构造和析构 277
7.2.3子类型化和类型适应 281
7.3多继承 284
7.3.1多继承的构造和析构 284
7.3.2二义性问题 289
7.4虚基类 296
7.4.1虚基类的定义格式 296
7.4.2虚基类的构造和析构 298
7.5程序实例 302
本章小结 308
习题 308
第8章 多态性和虚函数 321
8.1函数重载 321
8.1.1函数重载的形式 321
8.1.2函数重载的二义性 324
8.2运算符重载 325
8.2.1运算符重载的形式 325
8.2.2运算符重载中的注意事项 331
8.2.3其他运算符重载 333
8.3虚函数 339
8.3.1虚函数 339
8.3.2静态联编和动态联编 346
8.3.3纯虚函数 346
8.3.4抽象类 350
8.4程序实例 354
本章小结 363
习题 363
第9章 模板 369
9.1模板的概念 369
9.2函数模板 370
9.2.1函数模板的定义和使用 370
9.2.2宏与函数模板 373
9.2.3重载模板函数 374
9.3类模板 375
9.3.1类模板的定义 375
9.3.2类模板的使用 381
9.4程序实例 382
本章小结 384
习题 385
第10章 文件操作和异常处理 386
10.1C的I/O流库 386
10.2打开和关闭文件 387
10.3文本文件的读写 389
10.4二进制文件读写 394
10.5随机访问文件 401
10.6I/O状态 407
10.7异常处理 409
10.7.1异常的触发 409
10.7.2异常的捕捉 412
10.8调试程序 418
10.9程序实例 421
本章小结 425
习题 425