目 录 1
引言 1
§0.1本书内容 1
§0.2使用示例程序 1
§0.3本手册所使用的编程风格 2
第一部分学习C 3
第一章C程序解析 3
§1.1一个典型的C程序 3
§1.2注释 3
§1.3语句 4
§1.4关键字和名字 4
§1.5预处理指令 4
§1.6函数 4
§1.7调用函数 5
§1.8声明及初始化变量 5
§1.9外部变量与局部变量 5
§1.11关于printf 6
§1.10函数原型 6
第二章 函数 8
§2.1 函数和结构化程序设计 8
§2.2 main函数 8
§2.3函数的位置与可见性 9
§2.4函数定义和原型 10
§2.5调用一个函数 10
§2.6传递变元 12
§2.8给参数赋值 13
§2.7变元与参数 13
§2.9值传递 14
§2.10从函数中返回值 16
§2.11使用返回值 17
§2.12声明函数的返回类型 18
§2.13函数原型 18
§2.13.1原型化无参数的函数 19
§2.13.2原型化有不定参数的函数 19
§2.14函数声明与定义的旧式风格 19
§3.1.1 while语句 22
第三章流程控制 22
§3.1循环:while、do和for 22
§3.1.2 do语句 23
§3.1.3 for循环 25
§3.2判断语句:if、else、switch、break、continue和goto 27
§3.2.1 if语句 27
§3.2.2 else子句 29
§3.2.3 switch语句 30
§3.2.4 break语句 32
§3.2.5continue语句 34
§3.2.6 goto语句 35
第四章数据类型 36
§4.1基本数据类型 36
§4.1.1说明基本类型 36
§4.1.2说明变量 38
§4.1.3说明常量 38
§4.2聚集数据类型 40
§4.2.1数组 40
§4.2.2联合 53
§5.1可见性 55
§5.1.1局部变量 55
第五章高级数据类型 55
§5.1.2外部变量 57
§5.1.3多个源文件中的可见性 58
§5.1.4函数的可见性 59
§5.2生命期 59
§5.2.1延长局部变量的生命期 60
§5.3.2升级与降级 61
§53转换数据类型 61
§5.3.1数据类型的级别 61
§5.3.3自动类型转换 62
§5.3.4强制类型转换 64
§5.4寄存器变量 65
§5.5用typedef对现存类型重命名 66
§5.6枚举类型 66
§6.1.1算术操作符 68
第六章操作符 68
§6.1 C操作符介绍 68
§6.1.2关系操作符 69
§6.1.3赋值操作符 69
§6.2 C语言独特的操作符 70
§6.2.1加1和减1符 70
§6.2.2位操作符 71
§6.2.3逻辑操作符 73
§6.2.4地址操作符 74
§6.2.5条件操作符 74
§6.2.6 sizeof操作符 75
§6.2.7逗号操作符 75
§6.2.8基数操作符 75
§6.3操作符优先级 75
第七章预处理指令 78
§7.1#include指令 78
§7.2#define和#undef指令 79
§7.1.1说明包含文件 79
§7.2.1简单文本替换 80
§7.2.2似函数的宏 80
§7.2.3#undef指令 81
§7.3条件指令 81
§7.3.1 defined操作符 82
§7.4编译指令 83
§8.2指向简单变量的指针 84
§8.1使用指针 84
第八章指针 84
§8.2.1声明指针变量 85
§8.2.2指针存储方式 85
§8.2.3初始化指针变量 86
§8.2.4使用指针变量 87
§8.2.5指针基础知识小结 87
§8.3数组指针 88
§8.3.1数组及指针运算 89
§8.3.3重看PARRAY.C 90
§8.3.2指针比较 90
§8.4指针和串 91
§8.5传递指针至函数 93
§8.5.1传送地址常量与传送指针变量 95
§8.6指针数组 96
§8.7本章回顾 99
第九章高级指针 100
§9.1指向指针的指针 100
§9.2数组与指针的等价性 101
§9.3获取命令行参数 104
§9.4空指针 105
§9.5指向结构的指针 105
§9.6指向函数的指针 108
§9.6.1把函数指针作为参数传递 109
§9.7有关指针的几点说明 110
§10.1操作符问题 111
§10.1.1混淆赋值和相等操作符 111
第十章程序设计中的错误 111
§10.1.2混淆操作符优先级 112
§10.1.3混淆结构元素操作符 112
§10.2数组问题 113
§10.2.1数组下标错 113
§10.2.2在处理数组时忽略了数组下标 113
§10.2.3超出数组边界 114
§10.3字符串问题 114
§10.3.1混淆字符常数与字符串 114
§10.3.3忘记为字符串分配内存 115
§10.3.2 忘记了字符串结尾的空字符 115
§10.4指针问题 116
§10.4.1用错误的地址操作符来初始化指针 116
§10.4.2用错误的类型声明了一个指针 117
§10.4.3使用悬挂指针 117
§10.5库函数问题 118
§10.5.1没有检查库函数的返回值 118
§10.5.2与库函数重名 119
§10.5.3 忘记包含声明库函数的包含文件: 119
§10.6宏问题 120
§10.5.4调用scanf时忽略了地址操作符 120
§10.6.1忽略了宏参数的括号 121
§10.6.2在宏参数中使用递增和递减操作符 121
§10.7混合性问题 123
§10.7.1不匹配的if和else语句 123
§10.7.2放错了分号的位置 124
§10.7.3在DOS路径中忽略了双反斜杠 125
§10.7.4忽略了开关语句中的break语句 126
§10.7.5混淆有符号和无符号值 126
第二部分使用C 128
第十一章输入和输出 129
§11.1输入输出流 129
§11.2屏幕和键盘输入/输出 129
§11.2.1操作和打印字符串 129
§11.2.2打印数值 133
§11.2.3使用scanf进行键盘输入 136
§11.3.1创建文件和向文本文件写 139
§113标准磁盘输入/输出 139
§11.3.2打开文件以便二进制方式读 141
§11.3.3二进制和文本文件 142
§11.3.4数值型变量的文本格式 144
§11.3.5 使用二进制格式 148
§11.4低级输入和输出 151
§11.4.1低级读和低级写 152
§12.1为什么要分配? 155
§12.2存储分配基础 155
第十二章动态存储分配 155
§12.2.1分配存储块的准备工作 157
§12.2.2指定分配块的大小 158
§12.2.3图示说明 158
§12.2.4对malloc返回地址赋值 159
§12.2.5检测malloc函数的返回值 160
§12.2.6访问一分配存储块 160
§12.2.7为不同的数据类型分配存储块 161
§12.2.8采用free函数释放存储块 162
§12.4避免麻烦 163
§12.3.2 realloc函数 163
§12.3特定的存储分配函数 163
§12.3.1 calloc函数 163
第十三章图形 165
§13.1图形方式 165
§13.1.1检测当前视频模式 165
§13.1.2设置视频方式 166
§13.1.3编制图形程序 167
§13.1.4使用彩色图形方式 173
§13.1.5使用彩色视频文本方式 181
§13.2文本坐标 182
§13.3图形坐标 183
§13.3.1物理屏幕 183
§13.3.2视口坐标 186
§13.3.3窗口中的实际坐标 186
第十四章表示图形 193
§14.1术语 193
§14.2表示图形程序结构 195
§14.3五个图形程序例子 196
§14.4色板 206
§14.4.1颜色库 206
§14.4.2格式库 207
§14.4.3模式库 207
§14.4.4字符库 209
§14.5通用表示图形 209
§14.5.1图形环境 209
§14.5.2 titletype 210
§14.5.3 axistype 211
§14.5.4窗口类型 213
§14.5.5 legendtype 214
§14.5.6 chartenv 215
§14.6表示图形函数概述 216
第十五章字体 218
§15.1 QuickC字体 218
§15.2.1注册字体 220
§15.2.2设置当前字体 220
§15.2使用QuickC字体库 220
§15.2.3显示文本 222
§15.3例题程序 222
§15.4一些提示 224
第十六章内部汇编 226
§16.1内部汇编的优点 226
§16.2 _asm关键字 226
§16.3.3 Data伪指令及操作符 227
§16.3.4 EVEN和ALIGN伪指令 227
§16.3.1指令集 227
§16.3.2表达式 227
§16.3在_asm块中使用汇编语言 227
§16.3.5宏 228
§16.3.6段访问 228
§16.3.7类型和变量大小 228
§16.3.8注释 228
§16.4.2使用C符号 229
§16.4.1使用操作符 229
§16.3.9用CodeView调试器来调试 229
§16.4在_asm块中使用C 229
§16.4.3访问C数据 230
§16.4.4编写函数 231
§16.5使用和保存寄存器 232
§16.6跳转到标号 232
§16.7定义_asm块为C宏 233
§16.8优化 235
§A.1.1用户定义名 236
§A.1.2关键字 236
§A.1一般语法 236
附录A C语言指南 236
§A.1.3函数 237
§A.2流程控制 237
§A.2.1 break语句 237
§A.2.2 continue语句 238
§A.2.3 do语句 238
§A.2.4 for语句 238
§A.2.6 if语句 239
§A.2.5 goto语句 239
§A2.7 return语句 240
§A.2.8 switch语句 240
§A.2.9 while语句 241
§A3数据类型 241
§A3.1基本数据类型 241
§A.3.3高级数据类型 244
§A.4操作符 245
§A.5预处理指令 247
§A.6指针 249
附录B C库函数指南 250
§B.1 C运行库概况 250
§B.2缓冲区处理例程 252
§B3字符分类与转换例程 253
§B.4数据转换例程 254
§B.5错误信息例程 255
§B.6图形1:低级图形例程 256
§B.6.1配置方式与环境 256
§B.6.2设置坐标 257
§B.6.3设置色板 259
§B.6.4设置属性 259
§B.6.5输出图像 260
§B.6.6输出文本 264
§B.6.7传递图像 265
§B.7图形2:表示图形例程 266
§B.8图形3:字体显示例程 269
§B.9.1流式例程 270
§B.9输入、输出例程 270
§B.9.2低级例程 276
§B.9.3控制台与端口I/O例程 278
§B.10数学例程 279
§B.11 内存分配例程 283
§B.12进程控制例程 284
§B.13搜索与排序例程 285
§B.14字符串处理例程 286
§B.15时间例程 289