第1章 C 语言概述 1
1.1 C 语言的发展历史和特点 1
1.1.1 C 语言的发展历史 1
1.1.2 C 语言的特点 2
1.2 C 语言程序结构简介 4
1.3 C 语言程序的开发过程 9
1.3.1 在 UNIX 操作系统环境下开发 C 程序的步骤 11
1.3.2 在 Turbo C 环境下开发 C 程序的步骤 12
1.4 C 语言的字符集及词法约定 14
1.4.1 C 语言的字符集 14
1.4.2 C 语言的词法约定 16
第2章 基本数据类型 19
2.1 数据类型概述 19
2.2 常量 20
2.2.1 整型常量 22
2.2.2 浮点常量 24
2.2.3 字符常量 26
2.2.4 字符串常量 27
2.3 简单变量 28
2.4 基本数据类型 30
2.4.1 整型 30
2.4.2 字符型 32
2.4.3 浮点类型 33
2.5 类型转换 34
2.6 标准输入输出函数 35
2.6.1 标准输入输出函数简介 35
2.6.2 标准输出函数 printf 36
2.6.3 标准输入函数 scanf 40
第3章 运算符和表达式 43
3.1 算术运算符 43
3.1.1 加法运算符(+) 43
3.1.4 除法运算符(/) 44
3.1.6 算术表达式 44
3.1.5 取模运算符(%) 44
3.1.3 乘法运算符(*) 44
3.1.2 减法运算符(-) 44
3.1.7 程序举例 45
3.2 赋值运算符 46
3.3 增量运算符 49
3.4 关系运算符 51
3.5 条件运算符 52
3.6 逗号运算符 54
3.7 逻辑运算符 55
3.8 位逻辑运算符 58
3.9 移位运算符 62
3.10 强制类型转换运算符 63
3.11 其他运算符 64
3.12.1 运算符嵌套 65
3.12 运算符嵌套与运算顺序 65
3.12.2 运算顺序 66
3.13 运算符的优先级和结合性 67
第4章 语句和控制流 70
4.1 简单语句 71
4.1.1 表达式语句 71
4.1.2 空语句 73
4.1.3 复合语句 73
4.1.4 返回语句 73
4.2.1 条件语句的一般形式 74
4.2 条件语句 74
4.2.2 条件语句的简化形式 78
4.2.3 条件语句的嵌套形式 79
4.3 switch 语句 86
4.4 while 语句 90
4.5 do-while 语句 94
4.6 for 语句 98
4.7 break,continue 和 goto 语句 104
4.7.1 break 语句 104
4.7.2 continue 语句 107
4.7.3 goto 语句 109
4.8 循环的嵌套 110
第5章 函数 114
5.1 函数定义 115
5.2 函数的返回值和类型说明 121
5.2.1 函数的返回值 121
5.2.2 函数的类型说明 125
5.3 函数调用 127
5.3.1 函数调用的一般形式和执行过程 127
5.3.2 函数调用的参数传递 129
5.3.3 函数原型说明和函数原型定义 131
5.3.4 函数调用的方式 134
5.4.1 函数的嵌套调用 135
5.4 函数调用的嵌套和递归 135
5.3.5 可变参数函数 135
5.4.2 函数的递归调用 137
第6章 变量的作用域与存储类 144
6.1 变量的作用域 144
6.1.1 局部变量 144
6.1.2 全局变量 145
6.2 变量的存储类别 148
6.2.1 局部变量的存储类 149
6.2.2 全局变量的存储类 155
6.2.3 存储类小结 156
6.3 变量的初始化 157
6.4.1 内部函数 158
6.4 内部函数和外部函数 158
6.4.2 外部函数 159
第7章 数组 160
7.1 一维数组 162
7.1.1 一维数组的定义 162
7.1.2 一维数组的引用 163
7.1.3 一维数组的应用 164
7.1.4 一维数组的初始化 172
7.1.5 一维数组的内部表示 176
7.2 多维数组 177
7.2.1 二维数组的定义 177
7.2.3 二维数组的初始化 181
7.2.4 二维数组的应用 186
7.2.5 多维数组简介 191
7.3 字符数组 192
7.3.1 一维字符数组的定义和引用 192
7.3.2 一维字符数组的初始化 194
7.3.3 多维字符数组 196
7.3.4 字符数组的输入输出 197
7.3.5 字符串处理函数 203
7.4 将数组作为函数参数 206
7.4.1 数组元素作为函数参数 206
7.4.2 一维数组名作为函数参数 207
7.4.3 多维数组名作为函数参数 209
第8章 指针 211
8.1 指针的意义 211
8.2 指针变量的定义 213
8.3 指针变量的引用 216
8.3.1 与指针相关的运算 216
8.3.2 指针变量的引用 218
8.4 指针运算 220
8.4.1 加法运算 220
8.4.2 减法运算 222
8.4.3 自增运算 225
8.4.4 自减运算 225
8.4.5 赋值运算 226
8.4.6 关系运算 228
8.5 指针作为函数参数 230
8.6 指针与数组 234
8.6.1 一维数组指针的定义与赋值 234
8.6.2 利用指针引用一维数组元素 235
8.6.3 一维数组名作为函数参数 239
8.6.4 指向多维数组的指针 242
8.6.5 多维数组的指针作函数的参数 247
8.7 指向字符串的指针 249
8.7.1 指向字符串的指针 249
8.7.2 指向字符串的指针作为函数的参数 255
8.8 指针数组 257
8.9 指针的指针 260
8.10 main 函数的参数 262
8.11 指向函数的指针 264
8.12 返回指针的函数 267
8.13 void*和动态存储分配 268
8.13.1 void* 268
8.13.2 动态存储分配 269
第9章 结构、联合及其他类型 271
9.1 结构类型和结构变量的定义 271
9.1.1 结构类型的定义 271
9.1.2 结构变量的定义 273
9.2.1 结构成员的引用方法 275
9.2 结构成员的引用 275
9.2.2 指向结构的指针和运算符? 277
9.3 用结构变量和指向结构的指针作函数参数 279
9.4 结构变量的初始化 281
9.5 结构数组 283
9.6 联合类型 284
9.6.1 联合变量的定义 284
9.6.2 联合变量的引用 285
9.7 枚举类型 289
9.8 位域 292
9.9 用 typedef 定义类型 295
10.1.1 不带参数的宏定义 298
第10章 编译预处理 298
10.1 宏定义 298
10.1.2 带参数的宏定义 303
10.1.3 运算符#和## 307
10.2 文件包含 307
10.3 条件编译 308
第11章 文件 312
11.1 C 文件概述 312
11.2 文件类型指针 313
11.3 文件的打开与关闭 314
11.3.1 文件的打开 314
11.3.2 文件的关闭 317
11.4.1 fputc 函数和 fgetc 函数 318
11.4 文件的读写 318
11.4.2 fwrite 函数和 fread 函数 319
11.4.3 fprintf 函数和 fscanf 函数 321
11.4.4 fputs 函数和 fgets 函数 323
11.5 文件的定位 324
11.5.1 rewind 函数 324
11.5.2 fseek 函数 324
11.5.3 ftell 函数 326
11.6 文件操作的出错检测 327
11.6.1 ferror 函数 327
11.6.2 clearerr 函数 327