第1章 引言 1
1.1 语言与文章(程序) 1
1.2 标准与实现 2
1.3 C语言程序“编辑”体验 4
1.4 C语言程序“编译”、“连接”和“运行”体验 6
1.4.1 环境 6
1.4.2 环境安装:安装Visual Studio 2005 7
1.4.3 编译与执行字符集、连接和运行 9
本章习题 11
第2章 构成C语言程序的单词 12
2.1 对第一个C语言程序的初步解释 12
2.2 初识连接与main()函数 16
本章习题 23
第3章 从问题求解到程序设计 24
3.1 问题求解与算法 24
3.2 算法与数据类型 27
3.3 数据类型与标识符(变量名) 32
3.4 常量与字面值 37
3.4.1 常量 37
3.4.2 整型字面值 38
3.4.3 浮点型字面值 40
3.4.4 字符型字面值 41
3.4.5 字符串字面值 42
3.5 数据的输出与输入 43
3.5.1 数据的输出 43
3.5.2 数据的输入 49
本章习题 54
第4章 运算符与表达式 56
4.1 左值与右值 56
4.2 运算符总览与运算符优先级 57
4.3 运算符及表达式 59
4.3.1 算术运算符及表达式 59
4.3.2 赋值运算符与表达式 62
4.3.3 关系、判等运算符与表达式 63
4.3.4 逻辑运算符与表达式 64
4.3.5 条件运算符与条件表达式 65
4.3.6 位操作运算符与表达式 66
4.3.7 逗号运算符与顺序表达式 71
4.3.8 sizeof运算符 72
4.3.9 表达式副作用、括号运算符与求值顺序 72
4.4 类型转换 75
4.4.1 隐式转换 75
4.4.2 显式转换 80
4.5 溢出简介 81
本章习题 82
第5章 控制流与面向过程的程序设计 84
5.1 再续算法 84
5.1.1 顺序结构 84
5.1.2 选择结构 86
5.1.3 循环结构 87
5.2 语句 89
5.2.1 表达式语句 90
5.2.2 复合语句 90
5.2.3 return语句 91
5.3 条件语句:if及if-else语句 91
5.4 switch语句 95
5.5 循环语句 99
5.5.1 for语句 99
5.5.2 while语句 103
5.5.3 do语句 107
5.6 多重循环 109
本章习题 114
第6章 指针变量 116
6.1 指针变量的声明及初步使用 117
6.2 多重指针变量的声明 121
6.3 特殊指针 124
6.3.1 const指针 124
6.3.2 空指针 127
6.3.3 通用指针 129
6.4 指针变量的运算 129
6.4.1 赋值运算 129
6.4.2 加减运算 130
6.4.3 关系运算 132
6.4.4 指针变量与表达式 132
本章习题 132
第7章 数组 134
7.1 数组的声明 135
7.2 一维数组 136
7.2.1 一维数组的存储 136
7.2.2 一维数组的初始化 138
7.2.3 一维数组的存取及使用举例 139
7.3 二维数组 141
7.3.1 二维数组的存储 141
7.3.2 二维数组的初始化 143
7.3.3 二维数组的存取及使用举例 144
7.4 一维字符数组与字符串 147
7.5 指向数组的指针与元素为指针的数组 148
本章习题 151
第8章 函数 152
8.1 C语言程序的基本结构与面向过程的编程 152
8.2 从数学函数初步认识C语言中的函数 154
8.3 函数定义、函数声明与函数原型 156
8.3.1 函数定义 156
8.3.2 形式参数与实际参数 158
8.3.3 返回值 160
8.3.4 函数原型 162
8.4 参数传递 164
8.4.1 指针作为形参 164
8.4.2 数组作为形参 168
8.5 嵌套调用与递归调用 174
8.6 生存期与声明作用域 177
8.7 存储类说明符 179
8.8 类型限制符 183
8.9 动态内存分配标准库函数 184
8.10 指向函数的指针 186
8.11 typedef的“高级”用法 190
本章习题 191
第9章 预处理 194
9.1 预处理器与预处理指令 194
9.2 文件包含 195
9.3 宏定义与宏替换 196
9.3.1 对象式宏 196
9.3.2 函数式宏 196
9.3.3 预定义宏 198
9.4 条件编译 199
9.4.1 #if、#else、#elif、#endif 199
9.4.2 #ifdef、#ifndef 201
本章习题 202
第10章 自定义数据类型 204
10.1 枚举 204
10.2 结构体 206
10.2.1 结构体的定义、结构体变量声明 206
10.2.2 结构体对象与成员的访问 208
10.3 结构体对象在内存中的存储 211
10.4 结构体与动态链表 213
10.5 共同体 218
10.5.1 共同体的定义、共同体变量声明 218
10.5.2 共同体的成员访问及共同体使用 219
本章习题 222
第11章 标准库函数 225
11.1 标准库与非标准库 225
11.2 字符处理 227
11.3 字符串处理 229
11.4 文件操作 232
11.4.1 文件 232
11.4.2 文件的打开与关闭 233
11.4.3 文件的定位 234
11.4.4 文件的读操作 236
11.4.5 文件的写操作 238
11.4.6 标准输入输出流 240
11.5 标准语言补充 241
11.5.1 iso646.h 241
11.5.2 stdarg.h 242
11.5.3 stdbool.h 244
11.5.4 stddef.h 245
11.5.5 stdint.h 247
本章习题 250
第12章 项目实战:推箱子游戏开发 254
12.1 SDL简介 254
12.2 SDL开发环境的建立 256
12.3 实例分析:推箱子游戏 258
12.3.1 需求分析 258
12.3.2 推箱子游戏的分析与设计 258
12.3.3 游戏编码 262
本章习题 275
参考文献 276