如何學習 C 和 C++ 語言:終極清單
已發表: 2022-03-11C 編程語言最初是由 Dennis Ritchie 為 UNIX 操作系統開發和實現的。 C 語言非常簡單,不依賴於任何特定的硬件或系統。 這使用戶更容易編寫在幾乎所有機器上運行而無需進行許多(或任何)更改的程序。
C 語言通常被稱為中級計算機語言,因為它結合了高級語言的元素和彙編語言的功能主義。 C 編程允許對位、字節和地址進行操作——使程序員能夠更好地控製程序的行為方式,並更直接地訪問底層硬件的機制。
C 是由工作的程序員創建、影響和現場測試的。 最終結果是 C 為程序員提供了程序員想要的東西。
C++ 是 C 語言的增強版本。 C++ 包括 C 的所有內容,並增加了對面向對象編程 (OOP) 的支持。 此外,C++ 還包含許多改進和特性,使其成為“更好的 C”,獨立於面向對象編程。
C++ 語言實際上是可擴展的,因為我們可以定義新類型,使它們的行為就像標準語言中的預定義類型一樣。
如果您只是將 C++ 用作更好的 C,您將不會使用它的所有功能。 像任何質量工具一樣,C++ 必須按照其設計的方式使用,以利用其豐富性。 一些新特性包括封裝、內聯函數調用、重載運算符、繼承和多態性。
我為什麼要學習 C 或 C++?
C 和 C++ 仍然是目前最流行的兩種編程語言。 尤其是 C 的語法和概念,經受住了時間的考驗,您可以看到它們被延續到其他流行的編程語言中,甚至是現代語言,例如 Go。
即使您打算在餘生中構建 Web 應用程序或花哨的 Web 前端組件,學習 C 語言也將幫助您了解軟件和硬件的實際交互方式。
此外,C 和 C++ 無處不在。
特別是 C 支持的技術比我們認為的要多得多。
另一方面,您最喜歡的一些軟件(甚至可能是您正在閱讀本文的 Web 瀏覽器)是基於 C++ 構建的。 了解 C 是一個很好的基礎,但在許多情況下,軟件開發需要您學習 C++ 及其範例。
如果您想開發需要充分利用計算機性能和功能的軟件(例如,高端桌面遊戲、複雜的生產力工具或複雜的計算密集型程序),或者您只想要一種編程語言,讓您直接與計算機硬件交互,C 和 C++ 是適合您的語言。
那麼,您為什麼不想學習 C++ 或 C? 這與 25 年前不同,那時您可能不得不投資購買專有編譯器才能開始使用 - 今天您當然可以免費學習 C++。
如何開始使用 C 和 C++?
要開始使用 C 或 C++,在大多數情況下,您至少需要一個編譯器——儘管現在您也可以通過在瀏覽器中嘗試一些“hello world”C 項目來在線學習 C。
編譯器是可以通過命令行界面 (CLI) 運行的程序。 他們讀取整個程序並將其轉換為目標代碼,也就是將程序源代碼翻譯成計算機可以直接執行的形式。
為了讓生活更輕鬆,您可以選擇成熟的 IDE,讓您的 C 或 C++ 體驗更加愉快。
視窗
Windows 上有很多好的編譯器可用。
在 Windows 上,Visual Studio 提供了一個 C++ 編譯器。
編譯器還可以構建 C 程序。
Visual Studio 帶有自己強大、功能豐富的 IDE,對於任何開始使用 C 或 C++ 或主要針對 Windows 平台的人來說,它都是一個不錯的選擇。
如果您正在尋找更符合標準的東西,GCC (MinGW) 可能是您需要的。 Codeblocks IDE 在此設置中運行得非常好。
Clang 現在也是 Windows 上的一個強大的選擇——現在它甚至被用來構建 Google Chrome。
還存在其他跨平台 IDE,例如 Eclipse CDT、Jetbrains CLion 和 Netbeans,它們提供了功能齊全的 C 和 C++ 開發環境。 然而,最近這些都被 Visual Studio Code 所取代(請原諒具有諷刺意味),它也可用於 Linux 和 Mac 環境。
Linux
如果你在 Linux 上,你可能已經安裝了 GCC 作為你的發行版的一部分。 如果沒有,安裝它應該只是一個命令的問題:
# Ubuntu sudo apt-get install build-essential # Fedora sudo yum install gcc gcc-c++ # Arch Linux sudo pacman -S base-develCodeblocks IDE 和 Eclipse CDT 在 Linux 上的運行效果與在 Windows 上一樣好。
Mac / Mac OS X / OS X / macOS
在 Mac 上,您可以使用 Clang 或 GCC——兩者都是免費的。 雖然 GCC 支持更廣泛的 C 和 C++ 標準,但 Clang 在大多數情況下都可以正常工作。
Clang 應該已經安裝好了。
您可以使用 Homebrew 安裝 GCC:
brew install gcc您可以使用 XCode,這是一個很棒的 IDE,它是 Mac OS 開發人員工具的一部分。
有哪些學習 C 和 C++ 的好教程?
教程是開始使用新編程語言的好方法。 即使您對編程本身不是很熟悉。 以下教程將教您最重要的概念。
LearnVern 的 C 編程
這個綜合的 C 編程在線課程非常適合初學者,他們不一定有以前的編程經驗。 它從 C 和一般編程的基礎開始,涵蓋高級主題,例如動態內存分配、文件管理等。
Coursera 面向 C 程序員的 C++
如果您已經熟悉 C 並且想嘗試 C++,那麼這門由兩部分組成的課程非常適合您。 本課程真正突出了這兩種語言之間的差異,並向您展示瞭如何充分利用 C++。
Pluralsight 上的 C++ 基礎知識
另一方面,如果您想從 C++ 的基礎開始並從頭開始學習,PluralSight 正好為您準備了教程。 它面向那些想要更高效地使用 C++ 的人。
Udemy 初學者的 C 編程
這個 C 編程在線課程對初學者很友好,非常適合想要在三種流行平台(Windows、Linux 和 Mac OS X)中的任何一種上開始使用 C 的任何人。

Udemy 的完整初學者 C++ 教程
本課程面向具有基本計算機知識但現在想進入編程領域的任何人。 可以說,這是學習 C++ 作為第一語言的最佳方式。 此外,如果您發現遊戲開發很有趣,那麼這就是您想要開始的課程。
Udemy 的高級 C++ 編程培訓課程
一旦您對基本的 C++ 編程技能感到滿意並準備好開始真正的交易,您就會想要一個高級教程,比如這個。 本教程涵蓋多態性、模板、異常處理、流、容器、算法、堆棧等等。
comp.lang.c 常見問題
有時您所需要的只是一個豐富的問題和答案列表,您可以快速查找這些問題和答案以解決您的問題。 這本身不是一個教程,而是一組結構化的常見問題。
Frank Brokken 的 C++ 註釋(版本 10.9.2)
這個基於 Web 的教程適用於想要過渡到 C++ 的高級 C 程序員(或 Perl 或 Java 程序員——任何被認為具有“類 C 語法”的人)。 它繼續 C 編程語言的終點——例如指針、內存分配和復合類型——這使它成為一本非常好的 C++ 編程指南。
谷歌 C++ 風格指南
當您在學習 C++ 編程的同時編寫更複雜的程序時,您可能很快就會遇到可維護性問題。 這就是來自資深 C++ 程序員的風格指南派上用場的地方。 本樣式指南由 Google 維護。
如果上述 C/C++ 教程對您來說還不夠,那麼有很好的社區管理的學習 C 和學習 C++ 的教程列表。
我可以通過閱讀書籍來學習 C 和 C++ 嗎?
書籍是深入了解編程語言的好方法。 通過對編程語言的複雜功能如何工作的大量解釋,一本關於 C 或 C++ 的好書的知識可以讓您在將這些語言用於您的項目時獲得優勢。
C in a Nutshell: The Definitive Reference (2nd Edition) by Peter Prinz 和 Tony Crawford
雖然本書確實包含了對 C 編程語言的簡短介紹,但如果您想學習 C 編程,它更適合作為第二本書。本書提供了技巧、技術、示例和實用建議,可以讓高級開發人員最大限度地發揮他們的能力。能力。
這本書分為三個部分。
第一個描述了嚴格意義上的 C 語言; 第二個描述標準庫,第三個描述使用流行的 GNU 軟件集合中的工具編譯和測試程序的過程。
C in a Nutshell是 Brian W. Kernighan 和 Dennis Ritchie(也稱為 K&R)的 The C Programming Language 的完美伴侶,注定會成為您辦公桌上使用最廣泛的參考書。
Brian W. Kernighan 和 Dennis Ritchie 的 C 編程語言
這是原始 Kernighan & Ritchie 文本的第二版。
它通常被稱為新約,因為它包括了 ANSI 標準所包含的修改,同時保留了第一版的性質。
本書假設讀者俱備一些基本的編程知識。 因此,如果您剛剛開始編程,並且 C 是第一語言,那麼這本書可能不適合您。 但是,您可能會發現這些濃縮筆記值得。
這是了解 C 編程的最佳方式之一,而且是必備品——尤其是在您開始收集自己的編程書籍時。
Bjarne Stroustrup 的 C++ 編程語言(第 4 版)
Bjarne Stroustrup 是 C++ 的設計者,並撰寫了許多關於該主題的好書。
本書分為三個部分。
第一部分提供 C++ 編程的教程介紹。
第二部分討論了與使用 C++ 相關的設計和軟件開發問題,第三部分是完整的參考手冊。
隨著 C++ 的流行,一些 C++ 的獨立發行商紛紛出面,但本書討論的是“純 C++”; 也就是說,不使用依賴於實現的擴展。
學習編程語言的最佳方法之一是編寫與所學項目相關的小程序。 每章末尾都有練習,以應用您新學到的知識。
有效的 C++:改進程序和設計的 55 種特定方法,作者:Scott Meyers
使用 C++ 構建大型軟件需要設計和紀律。 如果你對 C++ 很認真,這本書是必讀的。
它是設計有效類、函數、模板和繼承層次結構的專家指南。 本書還討論了 C++ 與其他語言的不同之處以及如何以“C++ 方式”做事。
Stanley B. Lippman 的 C++ Primer(第 5 版)
C++ Primer 是一本很棒的書,它將使學習 C++ 變得有趣。 它確實是目前最好的 C++ 書籍之一,但前提是您非常熟悉編程概念並精通 C。
本書的最新版本非常適合希望充分利用新功能和高級功能的程序員。
Marshall P. Cline 的 C++ 常見問題解答(第 2 版)
這是一本了不起的書,包含對大約 500 個有關編程、設計、分析和測試的問題的答案。 它不適合初學者,而是適合已經弄清楚語言語法的程序員想要實現它們。
如果您有諸如“什麼是類不變量?”、“我應該如何使用異常?”、“執行析構函數時會發生什麼?”之類的問題,那麼這本書適合您。
有效的現代 C++:改進 C++11 和 C++14 使用的 42 種特定方法,Scott Meyers
如果您已經使用過 C++,但想試用它的最新標準,請閱讀本書。 您會驚訝於 C++ 在這些新標準中的發展程度。 本書討論瞭如何最有效地利用 C++ 中的新功能。 (儘管 C++ 標準現在已經達到 C++17,但 C++14 在許多項目環境中仍然是最前沿的。)
有效的 STL:50 種改進標準模板庫使用的具體方法,Scott Meyers
C++ 最令人驚奇的方面之一是它的標準模板庫 (STL)。 它是最強大的功能之一,但它可能非常複雜。 本書提供了 50 個很棒的技巧和 100 多個 STL 算法,用於探索 STL 的不同領域,使剛開始使用 C++ 的開發人員更容易上手。
