第1章 C语言概述 1
1.1 程序设计及编程语言的“代” 1
1.1.1 程序设计 1
1.1.2 编程语言的“代” 2
1.2 C语言的发展历史和特点 2
1.2.1 C语言的发展历史 3
1.2.2 C语言的特性 4
1.3 C程序示例 5
1.4 C程序的编辑、编译和运行 10
1.4.1 在UNIX/Linux操作系统下建立和运行C程序的步骤 12
1.4.2 在TurboC环境下建立和运行C程序的步骤 14
习题 16
第2章 基本数据类型 18
2.1 字符集及词法约定 18
2.1.1 字符集 18
2.1.2 词法约定 19
2.2 常量 22
2.2.1 整型常量 22
2.2.2 浮点常量 24
2.2.3 字符常量 24
2.2.3 字符串常量 25
2.3 简单变量 26
2.4 基本数据类型及其转换 27
2.4.1 整型int及其相关类型 28
2.4.2 字符型char及其相关类型 29
2.4.3 浮点型float 30
2.4.4 类型转换 31
2.5 printf0和scanf0函数的一般使用 33
习题 35
第3章 运算符和表达式 37
3.1 表达式 37
3.2 运算符及表达式 37
3.2.1 算术运算符和算术表达式 38
3.2.2 赋值运算符和赋值表达式 41
3.2.3 增量运算符和增量表达式 42
3.2.4 关系运算符和关系表达式 46
3.2.5 条件运算符和条件表达式 48
3.2.6 逗号运算符和逗号表达式 49
3.2.7 逻辑运算符和逻辑表达式 50
3.2.8 位逻辑运算符和位逻辑表达式 54
3.2.9 移位运算符和移位表达式 57
3.2.10 其他运算符 58
3.3 运算符优先级和结合性 60
3.3.1 运算符汇总 60
3.3.2 运算符嵌套 62
3.3.3 表达式计算顺序 62
习题 63
第4章 语句和控制流 67
4.1 表达式语句 67
4.2 空语句 68
4.3 返回语句 68
4.4 复合语句 69
4.5 if语句 71
4.5.1 if语句的形式 71
4.5.2 if语句的嵌套形式 74
4.6 switch语句 80
4.7 while语句 83
4.8 for语句 86
4.9 do-while语句 93
4.10 break语句 96
4.11 continue语句 98
4.12 goto语句 100
4.13 循环嵌套 102
习题 104
第5章 数组 107
5.1 一维数组的定义和引用 107
5.1.1 一维数组的定义 107
5.1.2 一维数组元素的引用 108
5.1.3 一维数组的初始化 112
5.2.1 字符数组的定义和引用 117
5.2 字符数组 117
5.2.2 字符数组的初始化 118
5.3 多维数组 121
5.3.1 二维数组的定义 121
5.3.2 二维数组的内部表示 122
5.3.3 多维数组的定义 122
5.3.4 二维数组引用 123
5.3.5 二维数组的初始化 125
5.4 应用举例 130
习题 138
6.1.1 经典C中函数定义形式 140
6.1 函数定义 140
第6章 函数和数据存储结构 140
6.1.2 标准C中函数定义形式 142
6.2 main()函数 145
6.2 函数调用 147
6.3.1 函数调用的一般形式 147
6.3.2 函数调用的方式 149
6.4 函数返回值和函数类型说明 157
6.4.1 函数返回值 157
6.4.2 函数类型说明 160
6.4.3 函数原型 162
6.5 函数的递归调用 164
6.6.1 void类型 170
6.6 void类型和可变参数函数 170
6.6.2 可变参数函数 172
6.7 数据存储类 173
6.7.1 自动变量 173
6.7.2 寄存器变量 175
6.7.3 外部变量 176
6.7.4 静态变量 181
6.7.5 变量存储类汇总表 185
习题 186
第7章 指针 190
7.1 什么是指针 190
7.2 指针变量的定义 192
7.3 指针变量的引用 194
7.3.1 运算符 194
7.3.2 运算符 195
7.4 指针变量的运算 197
7.5 指针变量和数组 206
7.5.1 数组的指针和数组元素的指针变量 206
7.5.2 利用指针变量引用数组元素 208
7.6 指针作为函数参数 211
7.7 指向字符串的指针变量 215
7.7.1 实现字符串处理的方式 215
7.8 指向多维数组的指针和指针变量 218
7.7.2 字符数组与字符指针变量的对比 218
7.8.1 多维数组的地址表示 219
7.8.2 指向基本数组元素的指针变量 221
7.8.3 指向行数组的指针变量 223
7.9 指针数组 228
7.10 指向指针的指针 231
7.11 指向函数的指针变量 235
7.11.1 定义指向函数的指针变量 235
7.11.2 指向函数的指针变量的初始化和使用 236
7.11.3 指向函数的指针变量作为函数参数 238
7.12 返回指针的函数 241
7.13 指向void量的指针变量 243
7.14 动态存储分配 245
7.15 命令行参数 251
习题 253
第8章 结构与联合 256
8.1 结构类型及其变量的定义 256
8.1.1 结构类型的定义 256
8.1.2 结构变量的定义 258
8.1.3 结构变量的内部表示 259
8.2 结构成员的引用 260
8.2.1 引用结构成员的一般方式 261
8.2.2 嵌套结构中成员的引用 262
8.3.1 结构变量的一般初始化方式 264
8.3 结构变量的初始化 264
8.3.2 有聚合成员的结构变量的初始化 265
8.4 结构数组 266
8.4.1 结构数组的定义及其应用 266
8.4.2 结构数组在内存中的表示 271
8.4.3 对结构数组的操作 272
8.5 结构和指针 273
8.5.1 指针变量作为结构成员 273
8.5.2 指向结构的指针 274
8.5.3 指向结构数组的指针 278
8.5.4 结构作为函数调用的参数 281
8.6.1 引用自身的结构 284
8.6 引用自身的结构和链表 284
8.6.2 链表 285
8.7 联合 292
8.7.1 联合变量的定义 293
8.7.2 联合变量的引用 294
习题 298
第9章 其他数据类型 301
9.1 枚举 301
9.1.1 枚举类型和枚举变量的定义 301
9.2 位段 307
9.2.1 字位标志法 307
9.2.2 位段的定义及其引用 308
9.3 用typedef定义类型别名 312
习题 315
第10章 预处理、输入/输出和文件操作 316
10.1 预处理功能 316
10.1.1 简单宏定义和宏替换 316
10.1.2 带参数的宏定义 320
10.2 文件包含 327
10.3 条件编译 330
10.4 其他预处理功能 333
10.5 库函数使用方式 333
10.6 常用标准输入/输出函数 334
10.6.2 gets( )和puts( ) 335
10.6.1 getchar( )和putchar( ) 335
10.6.3 printf( )和scanf( ) 338
10.7 文件及有关操作 342
10.7.1 流和文件的概念 342
10.7.2 文件的打开与关闭 343
10.7.3 文件的读写 347
10.7.4 文件定位和出错检测 352
10.8 其他一些常用的函数(宏) 355
习题 361
附录A C语言语法汇总 363
附录B 常用库函数 375
主要参考文献 378