許多開發者好奇:如果精通了 C++,對 C 語言的掌握程度大約有多少? 簡短回答:約 80% 以上。但這個數字背後有關鍵細節值得深入探討。
<stdio.h>、<stdlib.h>、<string.h>)在 C++ 中依然可用(以 cstdio 等形式),常用 I/O、記憶體管理、字串處理函數行為一致。class、new、delete 等在 C 中可作識別符,在 C++ 中為保留字)。雖然 C++ 涵蓋了 C 的大部分特性,但 C 語言有其獨特的設計哲學與現代 C++ 不同的慣用模式:
new/delete、std::vector)。malloc/free),無建構子/解構子、無 RAII 機制,資源釋放需極度謹慎,易發生洩漏或雙重釋放。void* 隱性轉換較寬鬆,C++ 需顯式轉型;C 無命名空間、無函數多載、無預設參數。extern 控制連結,模組化手段較原始;C++ 有模組(C++20)、內聯函數、模板實體化等機制。若你已精通 C++,想快速上手 C 專案:
stdint.h、restrict、_Generic、複合字面量、可變長度陣列),現代 C 已不止 K&R 風格。errno、setjmp/longjmp),而非例外處理。總結: C++ 開發者擁有極佳的 C 語法基礎,只需補齊「面向過程思維、手動資源管理、C 標準庫慣用法」即能無縫切換。掌握度 80% 起跳,剩下的 20% 需在實戰中打磨。