善於學習的人都應該善於總結。本書的編排順序充分考慮到知識的前後依賴關係,保證在講解每個新知識點的時候都只用到前面章節講過的知識,但正因為如此,很多相互關聯的知識點被拆散到多個章節中了。我們一章一章地縱向學習過來之後,應該理出幾個橫切面,把拆散到各章節中的知識點串起來。請從以下幾個方面整理和複習。
1、C的語法規則。
源檔案中所有函數定義之外可以出現哪些語法元素?
函數定義之中可以出現哪些語法元素?
語句有哪幾種?
哪些語法元素需要遵循標識符的命名規則?
表達式由哪些語法元素組成?
到目前為止學過哪些運算符?它們的優先順序和結合性是怎樣的?
哪些運算符取操作數的左值?哪些運算符的操作數必須是整型?哪些運算符有Side Effect?
哪些表達式可以做左值?哪些表達式只能做右值?
哪些地方必須用常量表達式?哪些地方必須用整數常量表達式?
2、思維方法與編程思想。
以概念為中心,第 1 節 “程序和編程語言”
組合規則,第 5 節 “表達式”
Least Surprise,第 3 節 “形參和實參”
充分條件與必要條件,第 4 節 “全局變數、局部變數和作用域”
布爾邏輯,第 3 節 “布爾代數”
遞歸,第 3 節 “遞歸”
函數式編程,第 1 節 “while語句”
迭代(第 6 章 循環語句)與增量式求解(第 2 節 “插入排序”)
抽象,第 2 節 “數據抽象”
數據驅動,第 5 節 “多維數組”
分而治之,第 4 節 “歸併排序”
折半查找,第 6 節 “折半查找”
3、調試方法
編譯錯誤、運行時錯誤與語義錯誤,第 3 節 “程序的調試”
增量式開發,第 2 節 “增量式開發”
打印語句與Scaffold,第 2 節 “增量式開發”
gdb,第 10 章 gdb
DbC與Assertion,第 6 節 “折半查找”