第0章 C语言基础 1
0.1 第二天,上帝创造了C 2
0.2 应该准备什么 3
0.3 热身运动 3
0.4 留言板程序 14
0.5 一个程序的产生到结束 17
0.6 小结 18
0.7 习题 18
第1章 C语言数据类型 21
1.1 基础中的基础 22
1.1.1 变量及其定义过程 24
1.1.2 int、float(double)和char 26
1.1.3 变量赋初值 29
1.1.4 进制及换算 30
1.1.5 我变我变我变变变 35
1.1.6 坚定的常量 37
1.2 运算符和表达式并不像看上去那么简单 41
1.2.1 +、-、*、/和% 42
1.2.2 “++”和“- -” 43
1.2.3 多样化的赋值运算符及其表达式 45
1.2.4 逗号运算符和逗号表达式 46
1.2.5 孰大孰小 47
1.2.6 真真假假 48
1.2.7 言简意赅的“?:”表达式 50
1.2.8 变量的量具sizeof 52
1.2.9 排一下顺序是绝对必要的 52
1.3 小结 54
1.4 习题 55
第2章 C语言的流程控制 57
2.1 C语言程序设计的结构及基本语句 58
2.1.1 程序的3种基本结构 58
2.1.2 C语言的语句 59
2.1.3 赋值语句 61
2.1.4 数据输出语句 61
2.1.5 数据输入语句 66
2.2 岔路口的抉择 69
2.2.1 if…else和else if 70
2.2.2 指哪打哪的switch 73
2.3 不可缺少的循环体 76
2.3.1 一劳永逸的while语句和for语句 76
2.3.2 貌合神离的while和do while语句 81
2.3.3 break还是continue 82
2.3.4 千里之堤往往溃于蚁穴 84
2.4 还差一点点 85
2.4.1 分不开的return和函数 86
2.4.2 自由主义的goto 86
2.5 小结 87
2.6 习题 89
第3章 C语言的数组和字符串 91
3.1 打开一个更广阔的视野——一维数组 92
3.1.1 一维数组和字符串 92
3.1.2 一维数组和字符串的运算 101
3.2 向更高维进军——二维数组和多维数组 110
3.2.1 二维数组的基本概念 110
3.2.2 二维字符数组 114
3.2.3 二维数组程序举例 115
3.2.4 三维及三维以上数组 121
3.3 小结 121
3.4 习题 121
第4章 C语言的函数 123
4.1 函数无所不在 124
4.1.1 C语言的函数 124
4.1.2 为什么需要函数 126
4.1.3 种芝麻得西瓜 129
4.1.4 细说函数声明 135
4.1.5 数组作为函数参数 136
4.1.6 对变量的又一次分类 142
4.1.7 递归——函数的自我调用 153
4.1.8 内部函数与外部函数 158
4.1.9 main函数 159
4.2 预处理——粮草先行 160
4.2.1 拿来主义者include 160
4.2.2 好好利用define提高程序可读性 162
4.2.3 灵活的条件编译 165
4.3 小结 168
4.4 习题 169
第5章 C语言的指针 171
5.1 指针不过是另外一种数据类型 172
5.1.1 从地址开始谈起 172
5.1.2 指针变量和指针所指变量 173
5.1.3 正确书写指针自加减 181
5.2 指针与数组——唇齿相依 183
5.2.1 指向一维数组的指针 183
5.2.2 指针也有更高维数 191
5.2.3 小心指针数组 196
5.2.4 **p 199
5.2.5 动态数组的实现 201
5.3 指针使函数充满灵性 202
5.3.1 函数可以有指针吗 202
5.3.2 理解函数返回的指针 211
5.3.3 函数的参数传递 212
5.4 小结 215
5.5 习题 216
第6章 struct、untion以及enum 219
6.1 struct——组合数据类型DIY 220
6.1.1 struct类型不等于struct类型变量 220
6.1.2 使用自定义的struct类型变量 224
6.1.3 一连串struct是什么样的 226
6.2 指针,又见指针 228
6.2.1 通过指针使用struct变量 228
6.2.2 struct作为函数的参数和返回值 231
6.3 链表——另一种串式结构 232
6.4 union——共用体类型 240
6.5 enum——枚举类型 244
6.6 使用typedef定义类型 247
6.7 小结 248
6.8 习题 249
第7章 C语言的位运算 251
7.1 无规则不成方圆——数据的编码规则 252
7.1.1 字节和位 252
7.1.2 原码 252
7.1.3 反码 253
7.1.4 补码 253
7.2 位运算的6种武器 255
7.2.1 “按位与”运算符& 255
7.2.2 “按位或”运算符| 256
7.2.3 “按位异或”运算符^ 257
7.2.4 “取反”运算符~ 258
7.2.5 “左移”运算符<< 258
7.2.6 “右移”运算符>> 259
7.2.7 不同长度的数据进行位运算 259
7.3 哪里需要使用位运算 260
7.4 小结 262
7.5 习题 262
第8章 C语言的文件操作 263
8.1 把文件看作一种数据类型 264
8.2 芝麻开门芝麻关门 265
8.2.1 打开文件的fopen 265
8.2.2 关闭文件的fclose 265
8.3 对文件进行读和写 266
8.3.1 fgetc、fputc、fgets和fputs 267
8.3.2 fscanf和fprintf 273
8.3.3 fread和fwrite——最常用的函数 277
8.3.4 fseek——步步为营 282
8.4 小结 285
8.5 习题 285
第9章 像程序员那样Coding 287
9.1 首先让程序看上去很美 288
9.1.1 {}与对齐 288
9.1.2 空格和空行 289
9.1.3 合理的长度 291
9.1.4 规范的注释 291
9.2 名不正自然言不顺 292
9.2.1 匈牙利命名法 293
9.2.2 变量的命名 293
9.2.3 函数与文件的命名 294
9.2.4 用宏替代 295
9.3 一些可能会碰到的问题 295
9.3.1 switch和break 295
9.3.2 比较问题 296
9.4 指针的陷阱 297
9.4.1 数组和指针 298
9.4.2 指针和内存 298
9.5 小结 300
9.6 习题 300
附录 C语言常用函数参考 301
A.1 字符串函数 301
A.2 输入/输出函数 302
A.3 数学函数 304
A.4 屏幕和图形函数 305
A.5 时间/日期函数 306
A.6 转换函数 306
A.7 内存函数 306
A.8 接口/系统调用函数 307