第0章 导读 1
0.1 来源与背景 1
0.1.1 为什么学习C语言 1
0.1.2 C语言的来源 1
0.1.3 C语言的标准 2
0.2 如何学习C语言 2
0.3 如何教C语言 3
0.4 编译过程 4
0.5 gcc简介 4
第1章 快速入门 5
1.1 Hello,world 5
1.2 变量与表达式 6
1.3 输入输出 8
1.4 分支、循环和数组 9
1.4.1 分支语句if-else 9
1.4.2 循环语句 10
1.4.3 数组 12
1.5 函数 12
习题1 14
第2章 C语言基本概念 15
2.1 标识符 15
2.2 数据类型 16
2.3 变量与常量 18
2.3.1 常量 18
2.3.2 变量 20
2.4 运算符与表达式 24
2.4.1 赋值运算符与赋值表达式 25
2.4.2 算术运算符与算术表达式 26
2.4.3 关系运算符与关系表达式 29
2.4.4 逻辑运算符与逻辑表达式 30
2.4.5 位运算符与位运算表达式 31
2.4.6 复合赋值运算符与复合赋值表达式 34
2.4.7 类型转换 35
2.4.8 sizeof、条件运算符和逗号运算符 36
2.4.9 运算符优先级与结合性 37
2.5 数组 39
2.5.1 一维数组 40
2.5.2 字符数组与字符串 42
2.5.3 二维数组 43
2.6 结构体 45
习题2 49
第3章 程序结构 51
3.1 分支结构 51
3.1.1 if语句 51
3.1.2 switch语句 56
3.2 循环结构 58
3.2.1 while语句 58
3.2.2 do-while语句 59
3.2.3 for语句 60
3.2.4 转移语句 64
3.3 函数 67
3.3.1 函数定义 67
3.3.2 函数调用 69
3.3.3 函数的参数 70
3.3.4 函数的值 71
3.3.5 函数声明 71
3.3.6 函数的嵌套调用与递归 73
3.4 定义与声明 77
3.4.1 变量作用域 77
3.4.2 修饰符 79
3.4.3 typedef 81
习题3 82
第4章 指针 83
4.1 指针与地址 83
4.1.1 地址空间 83
4.1.2 指针的概念及指针变量的定义 84
4.1.3 指针变量的初始化、引用及本质 85
4.1.4 指针的类型和存储空间大小 89
4.1.5 指针变量作为函数参数 91
4.2 再论数组 94
4.2.1 指向数组元素的指针及指针运算 94
4.2.2 数组名作函数参数 98
4.2.3 二维数组及指向一维数组的指针 100
4.2.4 数组名不完全是指针 107
4.3 字符串、指针数组与指向指针的指针 109
4.3.1 用字符数组和字符指针变量管理字符串 109
4.3.2 指向指针的指针 111
4.3.3 指针数组 112
4.3.4 main函数的参数 115
4.4 结构体与指针 116
4.4.1 结构体基本知识的复习 116
4.4.2 指向结构体的指针 118
4.4.3 动态存储分配与单链表 120
4.4.4 循环单链表和双向链表 128
习题4 130
第5章 I/O操作 131
5.1 标准库函数 131
5.1.1 使用C标准库 132
5.1.2 格式化输出 133
5.1.3 格式化输入 136
5.1.4 其他常用工具函数 140
5.2 文件操作 145
5.2.1 流 145
5.2.2 文件 146
5.2.3 打印源代码 149
5.2.4 解析BMP文件 151
5.2.5 修改BMP文件 154
5.3 设备操作 158
5.3.1 基本原理 158
5.3.2 终端设备的读写和设置 159
习题5 162
第6章 高级话题 164
6.1 编译预处理 164
6.1.1 宏 164
6.1.2 编译预处理运算符 168
6.1.3 文件包含 170
6.1.4 条件编译 172
6.2 联合体与指向联合体的指针 176
6.2.1 联合体 176
6.2.2 指向联合体的指针 177
6.3 函数指针、函数指针数组、回调函数 178
6.3.1 函数指针 178
6.3.2 函数指针数组 180
6.3.3 函数指针与回调函数 182
6.3.4 函数指针的强制转换 184
6.4 什么是地址映射 185
6.5 网络通信 186
6.6 gcc:从源代码到可执行程序 191
6.6.1 gcc简介 191
6.6.2 编译流程 191
习题6 193
第7章 课程设计 195
7.1 终端编程 195
7.1.1 基本目标:星座查询 196
7.1.2 扩展目标 197
7.2 文件编程 198
7.2.1 基本目标:字典查询 199
7.2.2 扩展目标 200
7.3 网络编程 201
7.3.1 基本目标:HTTP服务器 201
7.3.2 扩展目标 202
7.4 图形界面编程 203
7.4.1 基本目标:超市收银系统 204
7.4.2 扩展目标 205
附录A 开发规范 206
A.1 源代码规范 206
A.1.1 排版 206
A.1.2 注释 211
A.1.3 命名 212
A.1.4 可靠性 213
A.2 项目文档规范 216
A.2.1 项目文档 217
A.2.2 文档要求 220
A.3 文件管理 220
A.3.1 命名整理 220
A.3.2 保存与备份 221
附录B ASCII码表 222
参考文献 226