| 類型 | 資源 | 重點 |
| 演算法 | LeetCode (C 標籤)、洛谷、AtCoder | 指標操作、記憶體管理、邊界條件 |
| 系統 | CSAPP 實驗、Linux Kernel 模組開發 | 並發、虛擬記憶體、檔案系統 |
| 工程 | Redis、SQLite、musl libc、nginx 原始碼 | 模組化設計、錯誤處理、效能優化 |
3. 模式內化:常用慣用語與反模式
// 安全字串複製
#define STRCPY(dst, src) do { \
size_t n = strlen(src); \
if (n >= sizeof(dst)) n = sizeof(dst) - 1; \
memcpy(dst, src, n); \
dst[n] = '\0'; \
} while(0)
// 釋放並置 NULL
#define FREE_NULL(p) do { free(p); (p) = NULL; } while(0)
// 陣列元素個數 (僅適用靜態陣列)
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
持續精進清單
- 每週閱讀一篇高質量 C 原始碼 (約 200-500 行)。
- 每月完成一個小專案 (CLI 工具、資料結構庫、網路協議解析器)。
- 定期啟用
-fsanitize=address,undefined 跑測試,修復所有報警。
- 參與開源社群 (提交 PR、回覆 Issue),接受代碼審查。
- 上一篇文章: C語言計算指定日期為當年第幾天
- 下一篇文章: C語言 for 迴圈語法與執行流程圖解
Copyright ©
程式碼之家 All Rights Reserved