第一篇 C语言基础 2
第1章 对C语言的初步认识 2
1.1程序与程序设计语言 2
1.1.1程序、程序设计和程序设计语言 2
1.1.2结构化程序设计方法 3
1.2 C语言及其源程序的基本结构 4
1.2.1 C语言 4
1.2.2 C语言源程序的基本结构 5
1.2.3 C语言的基本语句 6
1.3 C语言的基本词法 7
1.3.1 C语言的字符集 7
1.3.2标识符 8
1.3.3保留字 8
1.3.4 C语言的词类 8
1.4源程序的编译和C语言的集成开发环境 8
1.4.1 C程序的开发过程 8
1.4.2 C语言的集成开发环境 9
小结 11
习题 11
第2章 基本数据类型、操作符和表达式 12
2.1数据类型 12
2.2整型数据 13
2.2.1整型常量 13
2.2.2整型变量 13
2.3实型数据 14
2.3.1实型常量 14
2.3.2实型变量 15
2.4字符型数据与字符串 15
2.4.1字符型常量 15
2.4.2字符型变量 15
2.4.3字符串常量 16
2.5变量说明与初始化 17
2.5.1变量说明(定义) 17
2.5.2变量的初始化 17
2.6运算符和表达式 17
2.6.1运算符 17
2.6.2表达式 18
2.6.3表达式中数据类型的转换 20
小结 22
习题 22
第3章 顺序结构程序设计 24
3.1算术运算符和赋值运算符 24
3.1.1算术运算符与算术表达式 24
3.1.2赋值运算符与赋值表达式 25
3.1.3自反赋值运算符 26
3.2赋值语句和注释语句 27
3.2.1赋值语句 27
3.2.2注释语句 27
3.3输入输出语句 28
3.3.1字符输出函数putchar() 29
3.3.2字符输入函数getchar() 29
3.3.3格式输出函数printf() 30
3.3.4格式输入函数scanf() 32
3.4顺序结构程序设计 34
小结 36
习题 37
第4章 选择结构程序设计 39
4.1关系运算符及关系运算表达式 39
4.2逻辑运算符及逻辑表达式 41
4.3选择语句 43
4.3.1单分支if选择语句 43
4.3.2双分支if_else选择语句 44
4.3.3多分支结构 45
4.3.4多分支开关语句switch 49
4.4选择结构程序设计 50
4.5条件运算符 54
小结 56
习题 56
第5章 循环结构程序设计 58
5.1逗号运算符和逗号表达式 58
5.2 goto语句 59
5.3循环语句 60
5.3.1 for循环语句 60
5.3.2 while循环语句 64
5.3.3 do while循环语句 65
5.4多重循环——循环的嵌套 67
5.5 break语句和continue语句 69
5.5.1 break语句 69
5.5.2 continue语句 70
5.6循环程序设计 71
小结 76
习题 76
第6章 位运算 78
6.1位运算符及位运算表达式 78
6.2位逻辑运算 79
6.3移位运算 81
6.4位自反赋值运算 83
小结 84
习题 84
第7章 数组与字符串 85
7.1一维数组 85
7.1.1一维数组的定义 85
7.1.2数组元素的引用 86
7.1.3一维数组的初始化 87
7.1.4一维数组程序设计 88
7.2多维数组 92
7.2.1多维数组的定义和引用 92
7.2.2二维数组的初始化 93
7.2.3二维数组程序设计 94
7.3字符数组与字符串 96
7.3.1字符数组的定义与初始化 96
7.3.2字符串与字符数组 97
7.4常用的字符串系统库函数 99
7.4.1字符串输入函数gets() 100
7.4.2字符串输出函数puts() 100
7.4.3字符串复制函数strcpy() 100
7.4.4字符串连接函数strcat() 101
7.4.5字符串比较函数strcmp() 101
7.4.6测试字符串长度函数strlen() 102
7.5字符数组程序设计实例 102
小结 104
习题 104
第8章 指针 106
8.1指针的概念 106
8.1.1指针和指针变量 106
8.1.2指针变量的定义 108
8.2指针运算符和指针变量的初始化 108
8.2.1指针运算符 108
8.2.2指针变量的初始化 110
8.2.3指针运算与指针表达式 110
8.2.4用指针处理简单变量 112
8.3数组的指针 114
8.3.1指向一维数组的指针 114
8.3.2指向二维数组的指针 116
8.4用指针处理字符串 121
8.5指针数组 123
8.6多级指针 125
小结 128
习题 128
第9章 函数 130
9.1函数概述 130
9.2函数的定义、调用和返回 131
9.2.1函数的定义 131
9.2.2函数的返回 132
9.2.3函数的调用 133
9.2.4函数原型的使用 134
9.2.5指针类型函数 136
9.3函数参数的传递方式 137
9.3.1值传递方式 137
9.3.2地址传递方式 138
9.3.3数组作为函数参数 138
9.4函数指针 139
9.5函数的嵌套调用和递归调用 142
9.5.1函数的嵌套调用 142
9.5.2函数的递归调用 143
9.6主函数main()的参数 144
9.6.1主函数main()的参数 144
9.6.2函数main()的返回值 147
小结 148
习题 148
第10章 数据的存储类型 150
10.1变量在内存中的存储 150
10.2局部变量和全局变量 150
10.2.1局部变量 151
10.2.2全局变量 151
10.3变量的存储类型 153
10.3.1局部变量的存储定义 154
10.3.2全局变量的存储定义 156
10.3.3变量存储类型小结 158
10.4内部函数和外部函数 158
10.4.1内部函数与外部函数 158
10.4.2在Turbo C++++集成环境下编译多文件程序 159
10.5动态存储单元 160
10.6修饰符const 161
小结 162
习题 163
第11章 用户定义数据类型 164
11.1结构型(Structure) 164
11.1.1结构型的定义 164
11.1.2结构型变量的定义 165
11.1.3结构型变量的初始化 167
11.1.4结构型变量成员的引用 167
11.1.5结构型变量作为函数的参数 170
11.2结构型数组 171
11.2.1结构型数组的定义和初始化 171
11.2.2结构型数组元素成员的引用 172
11.3指向结构型数据的指针 173
11.3.1指向结构型变量指针的定义、初始化和引用 173
11.3.2结构型变量指针的应用举例 174
11.3.3指向结构型数组的指针 177
11.4位域型(Bit Fields) 178
11.4.1位域型的定义 178
11.4.2位域型变量的说明和初始化 179
11.4.3位域型变量的引用 179
11.5联合型(Unions) 180
11.5.1联合型的定义 180
11.5.2联合型变量的说明 181
11.5.3联合型变量的引用 181
11.6枚举型(Enumerations) 185
11.6.1枚举型的定义 185
11.6.2枚举型变量的定义 185
11.6.3枚举型变量的引用 186
11.7用户自定义数据类型名称 188
小结 189
习题 190
第12章C语言的预处理器 192
12.1宏定义和宏替换 192
12.1.1不带参数的宏定义和引用 192
12.1.2带参数的宏定义和引用 195
12.1.3取消宏定义 197
12.2文件包含 197
12.3条件编译 199
12.3.1 #if #endif类型的条件编译命令 199
12.3.2 #ifdef和#ifndef类型的条件编译命令 200
小结 201
习题 202
第13章 磁盘文件操作(I/O系统) 203
13.1文件概述 203
13.1.1 C语言文件的概念 203
13.1.2二进制文件和文本文件 203
13.1.3顺序文件和随机文件 204
13.1.4缓冲文件系统和非缓冲文件系统 204
13.1.5文件型指针 204
13.2打开文件和关闭文件 205
13.2.1打开文件函数 205
13.2.2关闭文件函数 207
13.2.3标准设备文件 207
13.3文件的读和写 208
13.3.1字符文件读写函数 208
13.3.2文件尾测试函数、错误测试函数和文件头定位函数 210
13.3.3字符串文件读写函数 212
13.3.4数据块文件读写函数 213
13.3.5格式化读写文件函数 218
13.4文件的定位与文件的随机存取 220
13.4.1文件随机定位函数 220
13.4.2随机读写文件举例 221
13.4.3当前位置函数ftell() 223
小结 223
习题 224
第二篇 C++面向对象程序设计 226
第14章 C++概述 226
14.1面向对象的程序设计 226
14.1.1传统的程序设计方法 226
14.1.2面向对象的程序设计 227
14.2面向对象方法的基本特征 227
14.2.1对象 227
14.2.2类 228
14.2.3继承(inheritance) 228
14.2.4多态性(polymorphism) 229
14.3 C++++对C语法的扩充 229
14.3.1变量的定义 229
14.3.2 C++++的函数原型 230
14.3.3常数说明 230
14.3.4 C++++的注释语句 231
14.3.5 C++++的标准I/O操作 232
14.3.6作用域区分符 233
14.3.7函数参数的缺省 234
14.3.8引用型变量 235
14.3.9内联函数 236
14.3.10动态内存的分配 237
小结 239
习题 239
第15章 类 240
15.1类的结构 240
15.1.1类的定义 240
15.1.2类成员函数的定义 241
15.1.3类的对象的定义与访问 242
15.2类中的内联函数 245
15.2.1用修饰符inline说明成员函数 245
15.2.2隐式内联函数 246
15.3类的友元成员 246
15.3.1定义友元函数 247
15.3.2定义友元成员函数 247
15.3.3定义友元类 249
15.4类的静态成员 250
15.4.1静态数据成员 250
15.4.2静态成员函数 251
15.5对象作为函数的参数 252
15.5.1值传递 252
15.5.2引用传递 253
15.6类的指针 254
15.6.1对象指针 254
15.6.2 this指针 256
小结 257
习题 258
第16章 类的工具 259
16.1构造函数和析构函数 259
16.1.1不带参数的构造函数 259
16.1.2析构函数 260
16.1.3带参数的构造函数 262
16.1.4构造函数参数的缺省值 263
16.2函数重载 264
16.2.1一般函数的重载 264
16.2.2构造函数重载 265
16.2.3重载类成员函数 66
16.2.4构造函数的动态初始化 267
16.3运算符重载 268
16.3.1用成员函数重载运算符 269
16.3.2用友元函数重载运算符 271
16.4对象的动态存储管理 273
小结 275
习题 276
第17章 类的继承 278
17.1继承 278
17.1.1继承与派生类 278
17.1.2公有派生 279
17.1.3私有派生 280
17.2继承机制中的初始化 282
17.2.1不带参数的基类构造函数 282
17.2.2带参数的基类构造函数 283
17.3多重继承 286
17.3.1多重继承的继承机制 286
17.3.2指向派生类的指针 288
17.4虚基类 290
17.4.1多重继承中的二义性 290
17.4.2虚基类 292
小结 294
习题 294
第18章 虚函数与多态性 297
18.1虚函数 297
18.1.1虚函数的概念 297
18.1.2虚函数的应用 299
18.2纯虚函数和抽象基类 303
18.2.1纯虚函数 303
18.2.2抽象基类 304
18.3编译连接与执行连接 305
小结 305
习题 305
第19章C++++的I/O系统 308
19.1 C++++的I/O系统概述 308
19.1.1 C++++的I/O流的基本概念 308
19.1.2输入输出操作符的使用 310
19.2用户自定义插入操作符和提取操作符 310
19.2.1创建插入操作符“<< 310
19.2.2重载提取操作符“>>” 313
19.3格式化I/O 314
19.3.1用ios类的成员函数实现格式化I/O 314
19.3.2使用控制器函数实现格式化I/O 318
19.3.3建立自己的控制器函数 319
19.4文件的I/O 321
19.4.1打开和关闭文件 321
19.4.2文件的读和写 324
19.4.3二进制文件的读和写 328
19.4.4文件的随机访问 329
小结 331
习题 332
附录1实验指导书 333
附录2常用Turbo C库函数 343
附录3常用字符的ASCll 345
参考资料 346