如何学习C和C++语言(终极清单)

本文概述

  • 我为什么要学习C或C++?
  • 我如何开始使用C和C++?
  • 有哪些学习C和C++的好的教程?
  • 我可以通过读书来学习C和C++吗?
C编程语言最初是由Dennis Ritchie在UNIX操作系统上开发并实现的。 C语言非常简单, 不与任何特定硬件或系统绑定。这使用户更容易编写几乎不需要在所有机器上进行任何(或任何)更改的程序。
C语言通常被称为中级计算机语言, 因为它将高级语言的元素与汇编语言的功能性结合在一起。 C编程允许操作位, 字节和地址, 从而使程序员可以更好地控制程序的行为方式, 并可以更直接地访问底层硬件的机制。
C是由工作的程序员创建, 影响和现场测试的。最终结果是C为程序员提供了程序员想要的东西。
C++是C语言的增强版本。 C++包含了C的所有内容, 并增加了对面向对象编程(OOP)的支持。此外, C++还包含许多改进和功能, 使其成为” 更好的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, 这些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掩盖了这些(讽刺的是), 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, 它是Mac OS开发人员工具一部分的出色IDE。
有哪些学习C和C++的好的教程?教程是开始使用新编程语言的好方法。即使你对编程本身不是很熟悉。以下教程将教给你最重要的概念。
LearnVern的C编程
这门综合的C编程在线课程非常适合初学者, 他们没有一定的编程经验。它从C和编程的最基础知识开始, 涵盖了高级主题, 例如动态内存分配, 文件管理等。
Coursera的C++ for 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++编程指南。
Google C++样式指南
在学习C++编程的同时编写更多复杂的程序, 可能会很快遇到可维护性问题。这是资深C++程序员的样式指南派上用场的地方。该样式指南由Google维护。
如果以上C / C++教程对你来说还不够, 那么可以使用社区指导的良好列表来学习C和C++。
我可以通过读书来学习C和C++吗?书籍是深入学习编程语言的好方法。在对编程语言的复杂功能如何工作有很多很好的解释之后, 从一本不错的C或C++书籍中获得的知识可以为你在将这些语言用于你的项目时提供优势。
简而言之的C:Peter Prinz和Tony Crawford的权威参考(第二版)
虽然这本书确实包含C编程语言的简要介绍, 但是如果你想学习C语言, 则更适合作为第二本书。这本书提供了技巧, 技术, 示例和实用建议, 这些将使高级开发人员最大限度地利用他们。能力。
这本书分为三个部分。
第一个严格意义上描述了C语言。第二部分描述标准库, 第三部分描述使用流行的GNU软件集合中的工具编译和测试程序的过程。
简而言之, C是Brian W. Kernighan和Dennis Ritchie(也称为K&R)编写的C编程语言的完美伴侣, 注定是你桌上最常用的参考书。
Brian W. Kernighan和Dennis Ritchie撰写的C编程语言
这是原始Kernighan&Ritchie文本的第二版。
它通常被称为” 新约” , 因为它包含ANSI标准所包含的修改, 同时保留了第一版的性质。
本书假定读者具有一些基本的编程知识。因此, 如果你只是开始编程, 而C是第一语言, 那么这可能不是你的理想选择。但是, 你可能会发现这些精简笔记值得。
这是入门C编程的最佳方法之一, 并且是必备软件, 特别是如果你要开始编写自己的编程书籍。
Bjarne Stroustrup撰写的C++编程语言(第4版)
Bjarne Stroustrup是C++的设计师, 并且就该主题写了很多很棒的书。
本书分为三个部分。
第一部分提供C++编程的教程介绍。
第二部分介绍了与使用C++有关的设计和软件开发问题, 第三部分是完整的参考手册。
随着C++的普及, 已经出现了几个独立的C++发行商, 但该书讨论了” 纯C++” ;也就是说, 没有使用与实现相关的扩展。
学习编程语言的最好方法之一是编写与你所学项目相关的小程序。每章的末尾都有练习, 以应用你新学到的知识。
有效的C++:斯科特·迈耶斯(Scott Meyers)提出的55种改善程序和设计的特定方法
使用C++构建大型软件需要设计和纪律。如果你对C++认真, 那么这本书是必读的。
这是有关有效类, 函数, 模板和继承层次结构设计的专家指南。该书还讨论了C++与其他语言的不同之处以及如何以” C++方式” 进行操作。
Stanley B. Lippman撰写的C++ Primer(第5版)
C++ Primer是一本很棒的书, 它将使学习C++变得有趣。它确实是目前最好的C++书籍之一, 但是它假定你对编程概念非常熟悉并且精通C。
本书的最新版本非常适合希望充分利用新功能和高级功能的程序员。
Marshall P. Cline撰写的C++常见问题解答(第二版)
这是一本惊人的书, 其中包含有关编程, 设计, 分析和测试的大约500个问题的答案。它不是针对初学者的, 而是针对那些已经知道该语言语法的程序员想要实现它们的。
【如何学习C和C++语言(终极清单)】如果你有诸如” 什么是类不变式?” , “ 我应该如何使用异常?” , “ 执行析构函数时会发生什么?” 之类的问题, 那么这本书就适合你。
有效的现代C++:斯科特·迈耶斯(Scott Meyers)提出的42种改善C++ 11和C++ 14使用的特定方法
如果你已经对C++有所了解, 但想尝试使用它的最新标准, 请阅读本书。你会惊讶于通过这些新标准已经发展了多少C++。该书讨论了如何最有效地利用C++中的更新功能。 (即使C++标准现在已经达到C++ 17, 但在许多项目环境中C++ 14仍然是最前沿的。)
有效的STL:Scott Meyers改进对标准模板库的使用的50种特定方法
C++最令人惊奇的方面之一是其标准模板库(STL)。它是最强大的功能之一, 但可能非常复杂。本书提供了50个很棒的技巧和100多个STL算法, 它们探索了STL的不同领域, 这对于刚开始使用C++的开发人员来说更容易上手。
相关:开发人员最常见的十大C++错误

    推荐阅读