目 录
第01章 绪论001
1.1.C语言初识 002
1.2.C语言的发展 003
1.3.C语言的学习 004
习题 005
第02章 C语言程序基础008
2.1.数据类型与变量 009
2.1.1.字母、数字和特殊符号 009
2.1.2.常量、变量和关键字 009
2.1.3.数据类型 011
2.1.4.转义字符 013
2.1.5.token 014
2.2.输入/输出 014
2.2.1.字符数据输入与输出 015
2.2.2.格式输出与输入 015
2.3.运算符与表达式 019
2.3.1.赋值运算符和赋值表达式 019
2.3.2.逗号运算符和逗号表达式 022
2.3.3.算术运算符和算术表达式 022
2.4.完整的C语言程序 023
本章小结 025
习题 026
第03章 选择结构程序设计031
3.1.选择结构和条件判断 032
3.2.关系运算符和表达式 034
3.3.逻辑运算符和表达式 034
3.4.if语句 037
3.4.1.if语句的3种形式 037
3.4.2.if语句的嵌套 040
3.5.条件运算符和条件表达式 045
3.6.switch语句 048
3.7.计算机中的数 051
3.7.1.类型转换问题 051
3.7.2.浮点数的比较问题 054
本章小结 057
习题 058
第04章 循环结构程序设计062
4.1.概述 063
4.2.while语句 063
4.3.do-while语句 066
4.4.for语句 068
4.5.break和continue语句 074
本章小结 080
习题 080
第05章 利用数组处理批量数据086
5.1.概述 087
5.2.一维数组 087
5.2.1.一维数组的定义 087
5.2.2.一维数组元素的引用 088
5.2.3.一维数组的初始化 089
5.2.4.内存中的数组元素 090
5.2.5.越界检查 090
5.3.二维数组 091
5.3.1.二维数组的定义 091
5.3.2.数组元素的引用 092
5.3.3.二维数组的初始化 092
5.3.4.二维数组的内存图 094
5.4.字符数组 100
5.4.1.字符数组的定义 100
5.4.2.字符数组的初始化 101
5.4.3.字符串和结束标志 101
5.4.4.字符数组的输入/输出 102
5.4.5.字符串处理函数 102
本章小结 110
习题 110
第06章 函数115
6.1.概述 116
6.2.函数定义 118
6.2.1.无参函数与有参函数的定义 118
6.2.2.函数的形参、实参和函数的值 119
6.2.3.函数的声明与函数原型 122
6.3.函数的调用 124
6.3.1.函数调用的方式 124
6.3.2.函数的嵌套调用 125
6.4.函数调用过程中的栈帧分析 128
6.4.1.栈 129
6.4.2.栈帧 130
6.4.3.函数调用过程分析 131
6.5.数组作函数参数 132
6.6.函数的递归调用 136
6.7.局部变量和全局变量 146
6.7.1.局部变量 146
6.7.2.全局变量 147
本章小结 150
习题 150
第07章 再谈数据类型与变量155
7.1.信息的表征与处理 156
7.1.1.二进制表征 156
7.1.2.位运算 161
7.2.不同存储类型的变量 168
7.2.1.自动存储类型变量 169
7.2.2.寄存器存储类型变量 170
7.2.3.静态存储类型变量 172
7.2.4.外部类型存储变量 176
7.2.5.变量的其他修饰符 179
7.3.结构体 180
7.3.1.结构体的定义与使用 180
7.3.2.位域 185
7.4.共用体 188
7.5.枚举类型 192
本章小结 197
习题 197
第08章 指针204
8.1.指针概述 205
8.1.1.变量、地址和值 205
8.1.2.指针变量定义与指针运算符 206
8.2.传值与传地址 209
8.3.数组与指针 216
8.3.1.指针变量运算 216
8.3.2.通过指针引用数组元素 217
8.3.3.指向多维数组的指针和指针变量 224
8.4.动态内存分配 229
8.4.1.静态内存布局 231
8.4.2.动态内存布局 237
8.4.3.动态内存分配的问题 244
8.5.自指结构 251
8.5.1.链表 251
8.5.2.二叉树 255
8.6.指向函数的指针 261
8.6.1.回调函数 262
8.6.2.跳转表 263
本章小结 266
习题 266
第09章 文件272
9.1.概述 273
9.2.文件指针 273
9.3.文件的操作 274
9.3.1.文件的打开与关闭 274
9.3.2.文件读写 276
9.3.3.文件检测函数 284
9.4.一个简单的聊天机器人程序 286
9.4.1.自定义头文件 286
9.4.2.初识C程序的编译过程 288
9.4.3.一个简单的聊天机器人程序 290
本章小结 297
习题 297
第 10章 深入理解Hello World300
10.1.编译的工具与流程 302
10.1.1.GCC编译器核心 302
10.1.2.Binutils工具集 303
10.1.3.glibc库 303
10.1.4.GCC编译流程 304
10.2.预处理阶段 304
10.3.编译阶段 307
10.4.汇编阶段 313
10.5.链接阶段 315
本章小结 323
习题 323
第 11章 结语327
附录A.ASCII码表 330
附录B.C语言运算符优先级 333
附录C.C语言常用库函数 336
附录D.C语言类型转换 344
附录E.C语言的调试 349
参考阅读 352
跋 353