Chapter One 引言 1
1.1 C语言简史 1
1.2 为什么程序员爱用C语言 1
1.2.1 C is portable 1
1.2.2 C is a structured programming language 2
1.2.3 C is efficient 2
1.2.4 C is flexible 2
1.2.5 C is powerful 2
1.2.6 C is concise 3
1.3 开发C程序 3
1.4 学习C语言程序设计的建议 4
Chapter Two C数据类型 6
2.1 常量 6
2.2 变量 6
2.3 简单的屏幕输出 8
2.4 注释 9
2.5 数据类型 10
2.5.1 Short integer data types 10
2.5.2 Long integer data types 11
2.5.3 Unsigned integer data types 11
2.5.4 Double floating-point data type 11
2.6 数据类型的大小 11
Programming pitfalls 13
Quick syntax reference 13
Exercises 14
Chapter Three 简单的算术运算和表达式 16
3.1 C运算符 16
3.1.1 The assignment operator 16
3.1.2 Arithmetic operators 17
3.1.3 Increment and decrement operators 19
3.1.4 Combined operators 21
3.2 运算符优先级 22
3.3 类型转换与强制类型转换 24
Programming pitfalls 26
Quick syntax reference 27
Exercises 27
Chapter Four 键盘输入和屏幕输出 30
4.1 简单的键盘输入 30
4.2 在函数printf()中使用域宽和精度说明 31
4.3 单个字符的输入和输出 33
Programming pitfalls 35
Quick syntax reference 35
Exercises 36
Chapter Five 控制语句:if和switch 38
5.1 if语句 38
5.2 if-else语句 39
5.3 逻辑运算符 41
5.4 嵌套的if语句 42
5.5 switch语句 44
5.6 条件运算符 46
Programming pitfalls 47
Quick syntax reference 48
Exercises 48
Chapter Six 循环控制语句:while、do-while和for 51
6.1 while语句 51
6.2 do-while循环 52
6.3 for语句 54
6.4 嵌套的循环 56
Programming pitfalls 58
Quick syntax reference 59
Exercises 59
Chapter Seven 数组 61
7.1 引言 61
7.2 数组初始化 66
7.3 二维数组 67
7.4 二维数组的初始化 68
7.5 多维数组 69
Programming pitfalls 70
Quick syntax reference 70
Exercises 70
Chapter Eight 指针 73
8.1 变量的地址 73
8.2 指针变量 74
8.3 解引用运算符* 75
8.4 为什么使用指针 76
Programming pitfalls 77
Quick syntax reference 77
Exercises 77
Chapter Nine 指针和数组 79
9.1 指针和一维数组 79
9.2 指针和多维数组 81
9.3 动态内存分配 82
9.3.1 The malloc()function 82
9.3.2 The calloc()function 85
9.3.3 The realloc()function 86
9.3.4 Allocating memory for multi-dimensional arrays 87
Programming pitfalls 90
Quick syntax reference 90
Exercises 90
Chapter Ten 字符串 93
10.1 字符串 93
10.2 长字符串 94
10.3 字符串和数组 94
10.4 显示一个字符串 95
10.5 puts()函数 97
10.6 gets()函数 98
10.7 访问字符串中的单个字符 99
10.8 用字符串为字符指针赋值 100
10.9 字符串处理函数 101
10.9.1 Finding the length of a string 101
10.9.2 Copying a string 102
10.9.3 String concatenation 102
10.9.4 Comparing strings 102
10.9.5 Other string functions 103
10.10 数值字符串向数值的转换 103
10.11 字符串数组 105
Programming pitfalls 108
Quick syntax reference 109
Exercises 109
Chapter Eleven 函数 112
11.1 引言 112
11.2 函数参数 114
11.3 从函数返回一个值 116
11.4 按值传参 118
11.5 按引用传参 119
11.6 在函数中改变实参的值 120
11.7 向函数传递一维数组 121
11.8 向函数传递多维数组 123
11.9 变量的存储类型 124
11.9.1 auto 124
11.9.2 static 125
11.9.3 extern 126
11.9.4 register 128
11.10 命令行参数 128
11.11 数学函数 130
11.11.1 Some commonly used trigonometric functions 130
11.11.2 Other common mathematical functions 131
11.11.3 Pseudo-random number functions 132
11.11.4 Some time-related functions 132
11.12 递归 133
Programming pitfalls 136
Quick syntax reference 137
Exercises 137
Chapter Twelve 结构体 141
12.1 定义结构体 141
12.2 结构体指针 144
12.3 结构体变量的初始化 145
12.4 向函数传递结构体变量 147
12.5 嵌套的结构体 149
12.6 从文件中引用结构体模板 150
12.7 typedef语句 151
12.8 结构体数组 152
12.9 枚举数据类型 158
Programming pitfalls 160
Quick syntax reference 161
Exercises 162
Chapter Thirteen 文件的输入和输出 165
13.1 二进制文件和ASCII(文本)文件 165
13.2 文件的打开和关闭 166
13.3 使用函数fgetc()从文件中读字符 168
13.4 使用函数fputc()向文件中写字符 170
13.5 使用函数fgets()从文件中读字符串 171
13.6 使用函数fputs()向文件中写字符串 172
13.7 使用函数fscanf()和fprintf()进行文件的格式化读写 173
13.8 标准文件 174
13.9 使用函数fread()和fwrite()进行块读写 175
13.10 使用函数rewind()对文件重定位 177
13.11 使用函数fseek()随机访问文件 179
13.12 使用函数ftell()查找文件的当前位置 184
13.13 使用函数remove()删除文件 184
Programming pitfalls 185
Quick syntax reference 186
Exercises 187
Chapter Fourteen C编译预处理 190
14.1 包含文件 190
14.2 定义宏 191
14.3 带参数的宏 192
14.4 宏和函数 194
14.5 一些有用的宏 195
14.6 条件编译预处理指令 195
14.7 字符检测宏 196
14.8 assert()宏 197
Programming pitfalls 200
Quick syntax reference 200
Exercises 200
Appendix A List of C Keywords 202
Appendix B Precedence and Associativity of C Operators 203
Appendix C ASCII Character Codes 205
Appendix D Fundamental C Built-in Data Types 207