第1章 概论 1
1.1 C语言的入门知识 1
1.1.1 计算机中的数据 1
1.1.2 二进制编码系统 3
1.1.3 微型计算机硬件的基本组成 4
1.1.4 计算机系统的层次结构 5
1.2 C语言的发展及特点 8
1.2.1 C语言的发展过程 8
1.2.2 C语言的特点 9
1.3 C语言概览 10
1.3.1 C语言程序的书写格式 10
1.3.2 C语言程序的结构特点 12
1.4 C语言的基本语法单位 13
1.4.1 标识符 14
1.4.2 关键字 14
1.4.3 分隔符 15
1.5 简单的输入/输出 15
1.5.1 格式化输入/输出函数 15
1.5.2 字符输入/输出函数 17
1.6 运行C程序的一般步骤 17
本章小结 18
习题1 18
第2章 数据类型、运算符和表达式 19
2.1 数据类型 19
2.2 常量 19
2.2.1 整型常量 19
2.2.2 浮点型常量 20
2.2.3 字符型常量 21
2.2.4 字符串常量 22
2.2.5 符号常量 23
2.3 变量 23
2.3.1 整型变量 24
2.3.2 浮点型变量 24
2.3.3 字符变量 25
2.3.4 指针变量 26
2.4 运算符和表达式 26
2.4.1 表达式 26
2.4.2 算术运算符与算术表达式 27
2.4.3 关系运算符与关系表达式 28
2.4.4 逻辑运算符与逻辑表达式 28
2.4.5 自增和自减运算 29
2.4.6 赋值运算符与赋值表达式 30
2.4.7 条件运算符与条件表达式 31
2.4.8 逗号运算符与逗号表达式 31
2.5 位运算 31
2.5.1 按位与运算符“&” 32
2.5.2 按位或运算符“|” 33
2.5.3 按位异或运算符“∧” 33
2.5.4 二进制左移运算符“<<” 34
2.5.5 二进制右移运算符“>>” 34
2.5.6 按位取反运算符“~” 34
2.6 各类数值型数据间的混合运算 35
2.6.1 自动类型转换 35
2.6.2 运算符的优先级 36
2.7 输入/输出的进一步讨论 37
2.7.1 格式化输出函数printf 38
2.7.2 格式输入函数scanf 39
本章小结 41
习题2 41
第3章 程序和流程控制 45
3.1 C语言程序的版式及语句 45
3.1.1 C语言程序的版式 45
3.1.2 C语言的语句 47
3.2 结构化程序设计和流程控制 48
3.2.1 结构化程序设计 48
3.2.2 C语言的流程控制语句和辅助控制语句 48
3.3 if语句 49
3.3.1 if语句的标准形式 49
3.3.2 条件分支嵌套 50
3.4 switch多分支选择语句 52
3.5 循环控制 55
3.5.1 while语句 55
3.5.2 for语句 56
3.5.3 do-while语句 58
3.5.4 从一重循环到多重循环 58
3.6 辅助控制语句 61
3.6.1 break语句 61
3.6.2 continue语句 62
3.6.3 goto语句和标号 64
3.7 典型程序编写方法举例 64
本章小结 74
习题3 75
第4章 函数 77
4.1 C语言程序结构及模块化设计 77
4.1.1 结构化软件及其优越性 77
4.1.2 C语言程序的结构 79
4.2 C语言函数的定义、原型和调用 79
4.2.1 函数的定义 79
4.2.2 函数的调用 81
4.2.3 参数数目可变的函数 82
4.3 变量的存储类型 83
4.3.1 概述 83
4.3.2 自动型变量 84
4.3.3 寄存器型变量 87
4.3.4 外部参照型变量 88
4.3.5 静态型变量 91
4.4 函数间的数据传递 94
4.4.1 使用函数参数在函数间传递数据 94
4.4.2 使用返回值传递数据 97
4.4.3 使用全局变量传递数据 98
4.5 递归函数 99
本章小结 101
习题4 101
第5章 数组 105
5.1 数组的定义和应用 105
5.1.1 一维数组的定义和应用 105
5.1.2 二维数组的定义和应用 107
5.2 数组在函数间的传递 110
5.2.1 数组元素在函数间的传递 110
5.2.2 数组在函数间的传递 110
5.3 程序设计举例 112
本章小结 118
习题5 119
第6章 指针 120
6.1 基本概念 120
6.1.1 指针变量的引入 120
6.1.2 指针变量的定义与初始化 121
6.1.3 指针的使用 123
6.2 指针运算 125
6.2.1 指针的算术运算 125
6.2.2 指针的关系运算 128
6.2.3 指针的赋值运算 128
6.3 指针与数组 131
6.3.1 一维数组与指针 131
6.3.2 多维数组与指针 137
6.4 指针数组与多级指针 142
6.4.1 指针数组 142
6.4.2 多级指针 145
6.5 指针与函数 150
6.5.1 返回指针的函数 150
6.5.2 指向函数的指针 153
6.6 综合应用 158
本章小结 162
习题6 164
第7章 字符串 167
7.1 字符串的基本概念 167
7.1.1 字符 167
7.1.2 字符串 168
7.1.3 字符数组与字符指针 168
7.2 字符串的相关库函数及其使用 172
7.2.1 字符串输入输出函数 173
7.2.2 字符串转换函数 173
7.2.3 字符串处理函数 174
7.2.4 字符串比较函数 177
7.2.5 他函数 178
7.3 单个字符串的处理 180
7.4 多个字符串的处理 183
7.5 带参数的main函数 186
7.6 综合举例 188
本章小结 196
习题7 196
第8章 结构和联合 202
8.1 结构及结构变量 202
8.1.1 结构的定义 202
8.1.2 结构变量的定义 203
8.1.3 结构变量的使用形式和初始化 204
8.2 结构数组与结构指针 206
8.2.1 结构数组 206
8.2.2 结构指针 208
8.3 结构在函数间的数据传递 212
8.4 位字段结构 217
8.5 联合 218
8.6 类型定义语句typedef 221
8.6.1 用typedef语句定义新类型名 221
8.6.2 新类型名的应用 222
8.7 枚举类型 224
8.7.1 枚举类型的定义和枚举变量的说明 224
8.7.2 枚举类型的应用 225
8.8 综合应用 226
8.8.1 链表 226
8.8.2 其他应用举例 239
本章小结 241
习题8 241
第9章 C语言中的文件与图形 247
9.1 文件的基本概念 247
9.1.1 文本文件与二进制文件 247
9.1.2 缓冲型文件系统 247
9.2 文件类型指针 248
9.3 文件操作与相关函数 248
9.3.1 文件打开函数fopen() 248
9.3.2 文件关闭函数fclose() 250
9.3.3 数据块读/写函数fread()和fwrite() 250
9.3.4 格式化读/写函数fscanf()和fprintf() 251
9.3.5 读/写字符函数fgetc()和fputc() 251
9.3.6 读/写字符串函数fgets()和fputs() 251
9.3.7 rewind函数 252
9.3.8 fseek函数 252
9.3.9 文件检测函数 252
9.4 文件函数应用综合举例 253
9.5 C语言图形程序设计基本概念 255
9.6 C语言中的图形函数 255
9.6.1 初始化图形系统函数initgraph 255
9.6.2 关闭图形系统函数closegraph 256
9.6.3 设置画笔当前颜色及屏幕背景色 257
9.6.4 画点及获取屏幕点的颜色 257
9.6.5 设置线型及画直线 257
9.6.6 画圆、椭圆、矩形及多边形 258
9.6.7 填充图形函数 259
9.7 图形方式下的文本常见操作函数 260
9.7.1 视口操作函数 261
9.7.2 图形方式下的文字输出 261
9.7.3 屏幕图形的保存和恢复 262
9.8 C语言图形操作综合应用举例 263
本章小结 264
习题9 265
第10章 编译预处理 268
10.1 宏定义 268
10.1.1 不带参数的宏 268
10.1.2 带参数的宏 269
10.1.3 使用宏定义时应注意的问题 270
10.2 文件包含 271
10.3 条件编译 272
10.4 其他编译预处理 274
10.4.1 #error 274
10.4.2 #pragma 275
10.4.3 #line 275
本章小结 276
习题10 277
第11章 从C到C++ 279
11.1 对象的思想 279
11.1.1 从面向过程到面向对象 279
11.1.2 类的说明 280
11.1.3 C程序与C++程序对比 281
11.2 从C到C++的过渡 282
11.2.1 C++的I/O 283
11.2.2 const和volatile访问修饰符 283
11.2.3 引用 286
11.2.4 作用域分辨符 290
11.2.5 重载 290
11.2.6 内联函数 292
11.3 OOP设计思路 294
11.3.1 面向对象程序设计的特征 294
11.3.2 类设计示例 295
11.3.3 类与结构体的区别 297
本章小结 298
习题11 298
第12章 类与对象 300
12.1 类的实例化——对象 300
12.2 类的构造函数和析构函数 301
12.2.1 构造函数 301
12.2.2 重载构造函数和缺省构造函数 302
12.2.3 析构函数 304
12.3 new和delete 306
12.4 this指针 308
12.5 拷贝构造函数 310
12.5.1 缺省拷贝构造函数 311
12.5.2 自定义拷贝构造函数 312
12.6 运算符重载 314
12.7 类的特殊成员 317
12.7.1 const成员 317
12.7.2 静态成员 321
12.8 对象成员 324
12.9 对象数组与对象指针 326
12.9.1 对象与数组 326
12.9.2 对象与指针 327
12.10 友元 329
12.10.1 友元函数 330
12.10.2 友元类 332
本章小结 333
习题12 334
第13章 继承与多态 335
13.1 继承的实现方式 335
13.1.1 公有继承 335
13.1.2 私有继承 336
13.1.3 保护继承 337
13.1.4 访问控制相关分析 338
13.2 子类的构造函数顺序 339
13.3 多继承 342
13.3.1 多继承的概念 342
13.3.2 多继承的构造函数 342
13.3.3 多继承的二义性问题 344
13.4 多态的实现方式 346
13.4.1 虚函数的声明 347
13.4.2 虚函数在派生类中的重新定义 347
13.4.3 基类的析构函数是虚的 351
13.5 虚函数表 352
13.6 重载、隐藏和覆盖的区别 355
本章小结 357
习题13 357
附录A ASCII码表 362
附录B C语言中的关键字 363
附录C C语言中的常用库函数 364
参考文献 369