如何学习 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-devel
Codeblocks 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++ 的开发人员更容易上手。