"重读K&R的书,感慨许久。其语言流畅,组织合理,既介绍了语言,也旁通了算法,结构,库函数,系统调用,受益无穷。当年由于初读英文原版,生词太多而放弃,现在回想,有些感慨。不管怎样,现在读来,一气呵成,perfect~!" --题记
C1:A Tutorial Introduction
1.1 hello world 函数
1.2 变量 表达式 温度转换函数
1.3 for
1.4 define
1.5 字符输入输出 单词计数
1.6 数组
1.7 函数
1.8 参数 按值传递
1.9 字符数组
1.10 外部变量
C2:类型 操作符 表达式
2.1 变量名 约定
2.2 类型 不同的大小
2.3 常量
字符常量是整数 区分'x' "x"
枚举
2.4 声明
2.5 算术操作符 +-*/%
2.6 关系操作符 > >= < <= == != || &&
2.7 类型转换
规则:窄--》宽 低--》高
情形:赋值 函数参数传递 强制
2.8 ++ --
2.9 位操作 >> << ~
2.10 赋值操作符 += -=
2.11 条件表达式 ?:
2.12 优先级
注意side effect (由于操作数计算顺序不同 导致)
C3:Control Flow
选择 循环 break continue goto
C4:函数 程序结构
4.1 基础
4.2 返回非int 的函数 atof()
注意 声明和定义 返回类型不匹配的情况
参数为空 一定要写 viod
4.3 外部变量
函数内部不能定义函数
计算器程度
4.4 范围 scope
外部变量:从定义处 到文件尾
4.5 头文件
4.6 static 变量
为了隐藏 变量 为本文件可见
或者 函数的累积参数之用
4.7 register 变量
4.8 结构
内部变量为隐藏掉外部同名的变量 小心
4.9 初始化
外部变量和static 只初始化一次 所以必须是常量赋值
4.10 递归 快速排序
4.11 预处理
#if #ifndef ## #
C5: 指针 数组
5.1 指针和地址
&只取内存内的对象地址。不能是表达式 常量 register
5.2 指针作为函数参数
5.3 指针vs 数组
pa=a
5.4 地址算术
alloc afree
规则:同类型指针才能赋值 加减整数 同一数组的指针才能比较 与0比较或赋值
5.5 字符指针
strcmp strcpy
5.6 指针数组 指针的指针
5.7 多维数组
5.8 初始化指针数组
5.9 指针vs多维数组
5.10 命令行参数
argc argv
5.11 函数指针
int (* cmp) (void *,void *)
5.12 复杂声明
一个解析程序
C6 结构体 structure
6.1 基础 point
6.2 解构体 函数
6.3 结构体数组
关键字统计程序
6.4 结构体指针
6.5 自引用结构
二叉树
6.6 表查找
看看#define是 怎么实现的
哈希表
6.7 typedef
跨平台 便于阅读和编写
6.8 Union
6.9 位域
C7: input output
介绍 printf的实现 文件的读写
C8: Unix 系统调用
读写的实现 文件描述符 目录的操作 以及malloc的实现
附录A 使用手册
B 库函数介绍
C 标准的修改汇总