C 語言是計算機科學的基石,雖然語法簡潔,但要真正掌握需要系統性的學習路徑與大量實戰練習。
printf/scanf 格式化、緩衝區處理)推薦教材:《C Primer Plus》(第 6 版中文版)、譚浩強《C 程序設計》(適合考試導向)
malloc/calloc/realloc/freestring.h)實作原理必讀經典:《C 專家編程》、《C 缺陷與陷阱》
推薦:《資料結構與演算法分析:C 語言描述》(Mark Allen Weiss)、《演算法圖解》
進階必讀:《UNIX 環境高級程式設計》(APUE)、《Linux 核心設計與實作》、《Computer Systems: A Programmer's Perspective》(CSAPP)
| 原則 | 具體做法 |
|---|---|
| 手寫代碼 | 不要複製貼上,每行代碼親自敲入,感受語法結構 |
| 單步除錯 | 善用 GDB/IDE 斷點,觀察變數值、記憶體位址、呼叫堆疊變化 |
| 閱讀源碼 | 研讀 Linux 核心、Redis、SQLite、Nginx 等經典 C 專案 |
| 寫測試 | 為每個函式寫測試案例,邊界條件、異常輸入全覆蓋 |
| 重構優化 | 功能實現後,思考:能否更簡潔?更快?更省記憶體?線程安全? |
-Wall -Wextra -Werror,零警告通過| 類型 | 資源 | 特色 |
|---|---|---|
| 線上課程 | CS50 (Harvard)、MIT 6.087 | 免費、高質量、含實驗作業 |
| 練習平台 | LeetCode、HackerRank、Codeforces | 演算法題目、支援 C 語言提交 |
| 工具鏈 | GCC/Clang、VS Code + C/C++ 擴充、CMake、GDB、Valgrind | 專業開發環境,跨平台 |
| 參考手冊 | cppreference.com (C 區)、man pages (Linux) | 權威、可搜尋、含範例 |
「C 語言不難,難的是堅持。每天寫 50 行代碼,堅持一年,你就超越 90% 的學習者。」