| 核心知識點 | 對應章節 | 必做練習 |
|---|---|---|
| 變量、常量、數據類型、運算符、表達式 | Ch 3-4 | 溫度轉換、簡單計算器 |
| 控制流:if/switch、for/while/do-while、break/continue | Ch 6-7 | 猜數字游戲、九九乘法表、質數篩 |
| 函數:聲明/定義、參數傳遞、遞歸、內聯、庫函數 | Ch 9 | 遞歸漢諾塔、自定義字符串函數庫 |
| 數組、字符串、多維數組、字符串函數 | Ch 10-11 | 字符串反轉、矩陣乘法、KMP 搜索 |
| 指針:指針算術、指針與數組、函數指針、多級指針 | Ch 12-13 | 指針版字符串複製、動態內存管理器 |
| 結構體、聯合、枚舉、位域、抽象數據類型 | Ch 14 | 鏈表/棧/隊列/二叉樹基本操作 |
| 文件 I/O、二進制/文本、隨機訪問、格式化輸出 | Ch 13 | 學生管理系統 (文件持久化) |
| 預處理器、多文件編程、靜態庫/動態庫 | Ch 16-17 | 模塊化項目:計算器庫 + 主程序 |
| 專題 | 核心內容 | 實戰項目 |
|---|---|---|
| 進程/線程/信號 | fork/exec/wait、pthread、互斥鎖/條件變量/信號量、信號處理、守護進程 | 多進程 Web 服務器 / 線程池任務調度器 |
| 網絡編程 | Socket API、TCP/UDP、I/O 多路復用 (select/poll/epoll/IOCP)、協議設計 | 即時聊天室 / 簡易 HTTP 服務器 |
| 文件系統/IO | VFS、inode、mmap、零拷貝、AIO、文件鎖 | 高性能日誌庫 / 文件同步工具 |
| 調試/測試/構建 | GDB/LLDB、Valgrind/ASan/TSan、單元測試、CMake/Make、CI/CD | 為前項目建立完整測試流水線 |
| 性能優化 | Profiling (perf/gprof)、緩存友好、SIMD、鎖自由編程、鎖優化 | 優化上項目熱點函數 2x+ |
| 等級 | 書籍 | 定位 | 閱讀策略 |
|---|---|---|---|
| S (神級) | 《C 程序設計語言》(K&R) 第 2 版 | 權威規格、簡練典範 | 有基礎後精讀,作為字典查閱 |
| A+ | 《C Primer Plus》第 6 版 (Stephen Prata) | 最佳自學教程、例題豐富 | **入門首選**,逐章做完所有習題 |
| A | 《C 和指針》(Kenneth Reek) | 指針專題深度講解 | 階段 2 必讀,配合畫圖理解內存 |
| A | 《C 陷阱與缺陷》(Andrew Koenig) | UB 避坑指南 | 階段 2 必讀,每個陷阱寫代碼驗證 |
| A | 《專家 C 編程》(Peter van der Linden) | C 進階趣味深度 | 閱讀享受,理解語言設計哲學 |
| B+ | 《Linux C 程序設計》/《APUE》 | 系統編程聖經 | 階段 3 按專題查閱,不必通讀 |
| B | 《現代 C 語言編程》/《Effective C》 | 現代 C (C11/C17/C23) 最佳實踐 | 補充新標準特性、安全編碼規範 |
| 誤區 | 正確認知 |
|---|---|
| 「先學 C++,C 學不學無所謂」 | C 是 C++ 子集,**不懂 C 絕不可能精通 C++** (指針、內存、UB、ABI 皆源於 C) |
| 「指針太難,跳過用數組下標」 | 指針是 C 的靈魂,**不掌握指針等於不會 C**。畫圖、調試、寫容器庫強制掌握 |
| 「書上例題看懂就行,不用動手」 | **看懂 ≠ 會寫**。必須獨立完成習題、擴展功能、重構代碼 |
| 「用 Turbo C / VC++ 6.0 學習」 | **嚴禁使用 20 年前的編譯器**!用 GCC/Clang/MSVC 最新版,學習現代 C 標準 |
| 「忽略警告,能跑就行」 | `-Wall -Wextra -Werror -pedantic` **零警告編譯**,警告多半是 Bug 前兆 |
給初學者的話: C 語言簡單到幾小時能上手,卻深邃到一生可精進。它不隱藏計算機真相,**強迫你理解內存、CPU、編譯器如何工作**。這份「痛苦」正是通往系統級編程大師之路的**必經之路**。堅持畫圖、手敲、寫筆記、讀源碼,你將擁有最堅實的計算機科學內功。