第1篇 C语言基础知识 3
第1章 C语言概述 3
1.1 C语言的发展历史和特点 3
1.1.1 C语言的发展历史 3
1.1.2 C语言的特点 4
1.2 C程序示例 5
1.3 C程序的编辑、编译和运行 11
1.4 字符集及词法约定 15
1.4.1 字符集 15
1.4.2 词法约定 16
习题 18
第2章 基本数据类型 20
2.1 C语言的数据类型 20
2.2 简单变量 20
2.3 常量 22
2.3.1 整型常量 23
2.3.2 浮点常量 25
2.3.3 字符常量 26
2.3.4 字符串常量 27
2.4 基本数据类型及其转换 28
2.4.1 整型int及其相关类型 28
2.4.2 字符型char及其相关类型 30
2.4.3 浮点类型 31
2.4.4 类型转换 32
习题 35
第3章 运算符和表达式 37
3.1 算术运算符 37
3.2 赋值运算符 42
3.3 增量运算符 43
3.4 关系运算符 47
3.5 条件运算符 49
3.6 逗号运算符 51
3.7 逻辑运算符 53
3.8 运算符的优先级和结合性 57
3.8.1 运算符汇总 57
3.8.2 运算符嵌套 59
3.8.3 表达式计算顺序 60
3.9 printf和scanf的一般使用 60
习题 62
第4章 语句和控制流 65
4.1 表达式语句 65
4.2 空语句 66
4.3 返回语句 67
4.4 复合语句 68
4.5 if语句 69
4.5.1 if语句的一般形式 69
4.5.2 if语句的嵌套形式 72
4.6 switch语句 78
4.7 while语句 82
4.8 for语句 85
4.8.1 for语句的一般形式 85
4.8.2 for语句的几种变化形式 88
4.9 do—while语句 92
4.10 break语句 95
4.11 continue语句 98
4.12 goto语句 101
4.13 循环的嵌套 103
习题 109
第2篇 函数和复杂数据类型 113
第5章 函数 113
5.1 函数定义 113
5.2 函数返回值和函数的类型说明 120
5.2.1 函数返回值 120
5.2.2 函数的类型说明 126
5.3 函数调用 130
5.4.1 void 140
5.4 void、函数原型及可变参数函数 140
5.4.2 函数原型 141
5.4.3 可变参数函数 144
5.5 递归函数 144
习题 151
第6章 数据存储类 153
6.1 自动变量 153
6.2 寄存器变量 159
6.3 外部变量 161
6.4 静态变量 169
6.4.1 内部静态变量 169
6.4.2 外部静态变量 171
6.5 变量初始化 173
6.6 存储类小结 174
习题 175
第7章 数组 177
7.1 一维数组的定义和引用 177
7.1.1 一维数组的定义 177
7.1.2 一维数组的内部表示 179
7.1.3 一维数组的使用 179
7.1.4 一维数组的初始化 186
7.2.1 字符数组的定义和引用 195
7.2 字符数组 195
7.2.2 字符数组的初始化 199
7.3 多维数组 204
7.3.1 二维数组的定义 204
7.3.2 二维数组的引用 205
7.3.3 二维数组的初始化 209
习题 216
第8章 指针 218
8.1 什么是指针 218
8.2 指针变量的定义 219
8.3.1 运算符&和* 222
8.3 指针的引用 222
8.3.2 指针的引用 224
8.4 指针运算 226
8.5 指针作为函数参数 237
8.6 指针和数组 240
8.6.1 数组指针的定义与赋值 240
8.6.2 利用指针引用数组元素 240
8.6.3 指向多维数组的指针 244
8.7 指向字符串的指针 250
8.8 指针数组 253
8.9 指针的指针 258
8.10 命令行参数 261
8.11 指向函数的指针 262
8.12 返回指针的函数 265
8.13 void*和动态存储分配 266
8.13.1 void* 266
8.13.2 动态存储分配 266
习题 267
第9章 结构与联合 270
9.1 结构类型和变量的定义 270
9.1.1 结构类型的定义 270
9.1.2 结构变量的定义 272
9.2 结构成员的引用 273
9.2.1 结构成员的引用方法 273
9.2.2 指向结构的指针和运算符—〉 275
9.3 结构初始化 279
9.4 结构变量的使用 280
9.5 结构数组 281
9.6 联合 290
9.6.1 联合变量的定义 290
9.6.2 联合变量的引用 292
习题 294
10.1 枚举 296
第10章 其他数据类型 296
10.2 位域 302
10.3 用typedef定义类型 307
习题 309
第3篇 预处理功能与文件操作第11章 预处理功能 313
11.1 简单宏定义和宏替换 313
11.2 带参数的宏定义 317
11.3 运算符#和## 321
11.4 文件包含 322
11.5 条件蕴含 324
习题 326
11.6 其他预处理功能 326
第12章 位运算 328
12.1 数的表示 328
12.1.1 二进制 328
12.1.2 八进制和十六进制 328
12.1.3 原码、反码和补码 329
12.2 位运算符 329
12.2.1 按位运算符 330
12.2.2 移位运算符 334
习题 335
13.1.1 包含前导文件 336
第13章 输入/输出和文件操作 336
13.1 输入/输出库函数 336
13.1.2 格式输入/输出函数 337
13.1.3 字符输入/输出函数 341
13.1.4 字符串输入/输出函数 341
13.2 文件操作 341
13.2.1 文件的打开和关闭 342
13.2.2 文件的读写 342
13.2.3 文件定位和出错检测 344
习题 346
14.2 链表 348
14.1 引用自身的结构 348
第14章 复杂数据结构 348
14.3 二叉树 353
习题 356
第15章 等级考试辅导 357
15.1 选择题部分 357
15.1.1 试题要求和形式 357
15.1.2 语法提要 358
15.2 填空题部分 361
附录 364
参考文献 368