第1篇 C语言入门 3
第1章 Linux C语言的开发环境 3
1.1 编译语言的基本认识 4
1.1.1 编译器与解释器 4
1.1.2 解释性语言与编译语言的比较 5
1.2 GCC简介 5
1.3 C程序的开发过程 6
1.4 编辑一个C程序 7
1.5 C程序编译与执行 9
1.5.1 编译与执行程序 9
1.5.2 程序源文件发生错误 10
1.6 在Linux开发程序的技巧 11
1.7 习题 15
第2章 C程序初步 17
2.1 一个C程序的例子 18
2.2 C程序的基本结构 18
2.3 函数的概念 24
2.4 字符、字符串、数组与指针 27
2.5 循环控制 34
2.6 if语句及==%&运算符 36
2.6.1 if流程控制语句 36
2.6.2 ==与= 37
2.6.3 逻辑运算符 37
2.6.4 输入函数scanf() 38
2.6.5 运算符& 38
2.7 编写C程序的注意事项 38
2.7.1 变量的初值赋值 38
2.7.2 指针的初始值设置 39
2.7.3 “;”与C语言的自由格式 40
2.7.5 关键字 41
2.7.4 语句的集合 41
2.8 回顾与总结 42
2.9 习题 43
第3章 C语言的工作环境支持——函数库及整合服务 47
3.1 C语言是没有I/O的语言 48
3.2 I/O转向的概念 48
3.3 标准I/O的函数群 49
3.3.1 函数库 49
3.3.2 I/O函数群 49
3.3.3 printf():格式化输出函数 53
3.3.4 格式化输入函数 56
3.3.5 &与*运算符 57
3.4.1 常量的概念 58
3.4 #define与常量名 58
3.4.2 使用常量名 59
3.5 观察预处理的结果 61
3.6 #include与stdio.h 62
3.6.1 #include的用法 62
3.6.2 包含子程序文件 64
3.7 使用make命令 65
3.7.1 makefile的结构 66
3.7.2 makefile的简化及宏 69
3.7.3 常用的make参数 71
3.8 习题 71
第2篇 C语言详解 75
第4章 C语言的数据类型 75
4.1.2 C语言的数据类型 76
4.2 C语言的基本数据类型 76
4.1.1 数据类型 76
4.1 数据类型的变革 76
4.2.1 数据的长度 77
4.2.2 整型的修饰符 77
4.2.3 数据类型的用法 79
4.3 数据的表示法 79
4.3.1 字符类型 79
4.3.2 int:整型 81
4.3.3 浮点数与双精度数 82
4.3.4 双精度浮点数类型 83
4.3.5 void类型 84
4.4 中文字体处理 84
4.4.1 中文字体码的问题 84
4.4.2 如何显示及输入中文字 84
4.5 习题 85
第5章 变量、运算符与运算式 87
5.1 变量与标识符 88
5.2 运算符与表达式 89
5.2.1 运算符 89
5.2.2 表达式 89
5.3 四则运算符、=与% 90
5.3.1 =运算符 90
5.3.2 四则运算符与% 91
5.3.3 =与运算符的合并 93
5.3.4 ++与--运算符 94
5.3.5 比较用的运算符 96
5.3.6 逻辑运算符 97
5.3.7 位逻辑运算符 98
5.3.8 条件运算符 100
5.3.10 其他运算符 101
5.3.9 sizeof运算符 101
5.4 运算符的优先级与结合性 102
5.5 表达式中的类型转换 103
5.6 强制的类型转换 106
5.7 习题 107
第6章 程序的流程控制 109
6.1 C语言的流程控制 110
6.1.1 语句的集合 110
6.1.2 条件表达式的真假 111
6.2 条件判断if...else 111
6.2.1 if语句 111
6.2.2 多重的if语句 112
6.2.3 if...else语句 112
6.2.4 if...else的变形一:嵌套式if...else 114
6.2.5 if...else的变形二:else...if语句 116
6.2.6 if...else的变形三 117
6.2.7 使用if...else的注意事项 118
6.3 多重选择的switch...case 119
6.3.1 switch...case 119
6.3.2 break 121
6.3.3 default 123
6.4 循环控制:while、do...while、for与continue 123
6.4.1 预先判断式循环while 123
6.4.2 后设判断式循环do...while 125
6.4.3 for循环 127
6.4.4 各种循环的使用时机 130
6.4.5 循环控制中的break 131
6.4.6 continue语句 132
6.5 强制性的流程控制goto 133
6.6 习题 136
第7章 函数与宏 139
7.1 函数简介 140
7.2.1 ANSI函数定义与声明 141
7.2 函数的定义与类型声明 141
7.2.2 函数的返回值 143
7.2.3 函数的类型 145
7.2.4 void类型 146
7.3 递归函数 147
7.4 预处理器 153
7.4.1 宏指令 153
7.4.2 带参数的宏定义 153
7.4.3 利用宏来调试 155
7.4.4 #undef的使用 156
7.4.5 条件性编译指令 156
7.5 标准函数库 158
7.5.1 math.h 159
7.5.2 stdlib.h 161
7.5.3 time.h 163
7.5.4 其他的标准函数库 165
7.6 习题 165
第8章 指针与数组 167
8.1 指针与&、*运算符 168
8.1.1 指针的声明 168
8.1.2 &运算符的使用方法 168
8.1.3 运算符的使用方法 168
8.1.4 指针的初始化 170
8.1.5 指针的转型 172
8.2 以指针来传递参数 173
8.2.1 以指针传递变量地址 174
8.2.2 以指针返回字符串地址 177
8.3 指针与数组的关系 177
8.3.1 以指针传递数组地址 181
8.3.2 概念的澄清 183
8.3.3 指针的运算 184
8.4 多维数组及其设置 185
8.4.1 多维数组 186
8.4.2 数组指针 189
8.4.3 把多维数组传入函数 189
8.5 指针数组、指针的指针 190
8.5.1 指针数组 190
8.5.2 指针的指针 192
8.6 命令参数的引入:argc、argv 195
8.7 习题 199
第9章 变量等级 203
9.1 C程序的结构与变量等级 204
9.2 内部变量 204
9.2.1 内部变量的范围 205
9.2.4 区段的构造与范围 206
9.2.3 内部变量的优缺点 206
9.2.2 内部变量的生命周期 206
9.3 静态内部变量 208
9.4 外部变量 209
9.4.1 外部变量的范围 209
9.4.2 外部变量的生命周期 210
9.4.3 外部变量的优缺点 210
9.5 静态外部变量 214
9.6 函数是外部个体 216
9.7 register变量 217
9.8 习题 217
第10章 用户自定义数据类型——结构体与共用体 219
10.1 结构体 220
10.1.1 可由用户自定义的数据类型 220
10.1.2 结构体的声明 220
10.1.3 结构体的数组 222
10.1.4 结构体的初始设置 223
10.2 存取结构体数据 224
10.3 结构体指针 225
10.3.1 ->运算符 226
10.3.2 结构体的结构体 228
10.4 结构体与函数 229
10.4.1 把结构体指针传入函数 229
10.4.2 把结构体直接传入函数 231
10.5 共用体的使用 232
10.6 位段的使用 235
10.7 枚举型 236
10.8 类型名称定义typedef 238
10.9 习题 240
第11章 文件处理 245
11.1.2 Linux的I/O函数群 246
11.1.1 标准I/O函数库 246
11.1 文件I/O与操作系统的关系 246
11.2 C语言的文件概念 247
11.2.1 stream 247
11.2.2 FILE类型 247
11.2.3 文件的打开和关闭 248
11.2.4 缓冲式I/O 251
11.3 C语言的文件I/O函数群 251
11.3.1 读写文件字符:fgetc()、fputc() 251
11.3.2 字符串I/O:fgets()、fputs() 254
11.3.3 格式化I/O:fscanf()、fprintf() 256
11.4 顺序与随机读写 258
11.4.1 文件位置指针 258
11.4.2 fseek()函数 258
11.4.3 ftell()函数 260
11.5 文件的格式分类 261
11.4.4 fopen()的“+”更新模式 261
11.5.1 文本文件 262
11.5.2 二进制文件 263
11.5.3 设备文件 263
11.6 使用二进制文件 263
11.6.1 fopen()的另外3种文件设置模式 263
11.6.2 读写二进制文件 265
11.6.3 与结构体配合 266
11.7 习题 269
第12章 系统调用函数 271
12.1 认识系统调用 272
12.1.1 判断某个函数是属于系统调用或标准函数库函数 272
12.1.2 系统调用使用上的限制 273
12.2 取得与设置系统信息 273
12.2.1 取得操作系统名称、版本、网址及计算机类型 273
12.2.2 取得与设置网址 274
12.2.3 取得系统运行的状态 277
12.2.4 取得文件系统的状态 278
12.3 文件与目录管理 280
12.3.1 取得文件的状态 280
12.3.2 更改文件的权限与拥有者 283
12.3.3 创建文件的链接或符号链接 285
12.3.4 删除文件 287
12.3.5 创建与删除目录 287
12.3.6 取得与切换工作目录 288
12.4 习题 290
附录 291
附录A GCC参数说明 292
附录B 利用gdb调试 300
附录C 集成开发环境 317
附录D VIM文本编辑器 329