作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
Toptal研究团队包括一些我们最有经验的专业人士.
本文更新于2022年7月25日. 它已被修改,以包括最新和相关的信息和来源, 并经过了我们的编辑团队的审查.
C语言最初是由Dennis Ritchie为UNIX操作系统开发和实现的. C语言非常简单,不依赖于任何特定的硬件或系统. 这使得用户更容易编写在几乎所有机器上运行而不需要太多(或任何)更改的程序.
C语言通常被称为中级计算机语言,因为它结合了高级语言的元素和汇编语言的功能主义. C编程允许对位进行操作, 字节, 和地址——给程序员更多的控制 程序将如何运行 以及更直接地访问底层硬件的机制.
C的创建、影响和现场测试都是由 程序员工作. 因此,C语言给了程序员想要的东西.
c++是C的增强版. c++包含了C的所有方面,并增加了对面向对象编程(OOP)的支持。. c++还包含许多改进和特性,使其成为独立于OOP的“更好的C”.
c++语言是可扩展的:我们可以定义像预定义类型那样的新类型, 哪些是标准语言的一部分.
如果您只是将c++作为更好的C语言来使用,那么您将无法使用它的所有功能. 像任何高质量的工具一样,c++必须按照设计的方式使用,以充分利用它的丰富性. 一些新特性包括封装, 内联函数调用, 重载操作符, 继承, 和多态.
C和c++仍然是 两种最流行的编程语言. 特别是C语言的语法和概念经受住了时间的考验. 它们已被合并到其他流行的编程语言中, 包括最现代的, 如 Go.
即使你打算专注于构建web应用程序或花哨的web前端组件, 学习C语言将帮助你理解软件和硬件是如何相互作用的.
C和c++无处不在.
C,特别地, 为更多的技术提供动力 比我们认为的要多.
另一方面,一些你最喜欢的软件——甚至可能是你现在使用的浏览器——是建立在c++上的. 知道C是一个很好的底色, 但在很多情况下, 软件开发需要你学习c++和它的范例.
如果你想开发的软件需要充分利用电脑的性能和能力——高端桌面游戏, 先进的生产力工具, 或者复杂的计算密集型程序, 例如,或者如果您只是想要编程语言,让您直接与计算机的硬件进行交互, C和c++是适合你的语言.
那么,为什么你不想学习c++或C呢? 25年前,您可能必须投资于专有编译器才能开始.
今天,你可以免费学习c++.
要开始使用C或c++,您需要一个编译器——尽管现在您也可以这样做 通过在浏览器中尝试“hello world”C项目来在线学习C.
编译器是可以通过命令行接口(cli)运行的程序。. 他们读了整个程序 将其转换为目标代码, 哪一种是将程序源代码翻译成计算机可以直接执行的形式.
让生活更轻松, 您可以选择成熟的ide,使您使用C或c++的体验更加愉快.
窗户上有很多好的编译器.
在窗户上, Visual Studio 提供了一个c++编译器.
编译器 还会编写C程序吗.
Visual Studio自带强大的功能, 功能丰富的集成开发环境, 使它成为任何开始使用C或c++的人的明智选择, 或者主要针对窗户平台的人.
如果你在寻找更符合标准的东西, GCC (MinGW) 也许是你需要的. 的 Codeblocks IDE 在这个设置中工作得非常好.
C朗现在也是窗户上的一个强大选择它被用来构建谷歌Chrome.
其他跨平台的ide,例如 Eclipse CDT, JetBrains CLion, NetBeans,提供功能齐全的C和c++开发环境. 然而,最近,这些都被 Visual Studio代码,它也可用于Linux和Mac环境.
如果您使用的是Linux,那么您的发行版中可能已经安装了GCC. 如果没有,安装它是一个简单的命令:
# Ubuntu
Sudo apt-get install build-essential
# Fedora
Sudo yum安装GCC
# Arch Linux
sudo pacman -S base-devel
Codeblocks IDE和Eclipse CDT在Linux上的工作效果和在窗户上一样好.
在Mac上,你可以使用C朗或gcc——两者都是免费的. 虽然GCC支持更广泛的C和c++标准,但C朗在大多数情况下都能很好地工作.
C朗应该已经安装了.
可以使用以下命令安装GCC 家酿:
Brew安装GCC
你可以使用Xcode,一个很棒的IDE,它是Mac OS开发者工具的一部分.
教程是开始学习一门新的编程语言的好方法, 即使你对编程本身不是很熟悉. 最好的c++和C教程会教你最重要的概念.
这个全面的C编程在线课程非常适合初学者. 它从C和编程的基本知识开始, 并涵盖了高级主题, 如动态内存分配和文件管理.
如果您已经熟悉C语言,并想尝试使用c++, 这两部分的课程非常适合你. 本课程强调语言之间的差异,并向您展示如何充分利用c++.
如果你想从c++的基础知识开始,从头开始学习, Pluralsight为您提供了教程. 它是为那些想要更高效地使用c++的人而创建的.
这个C编程在线课程是初学者友好的,适合任何想要在三个流行平台(窗户和窗户)上开始使用C的人, Linux, 和Mac OS X).
本课程适用于任何具有基本计算机知识但想要进入编程领域的人. 可以说,这是学习c++作为第一语言的最好方法. 此外,如果你觉得游戏开发很有趣,这是你的第一门不错的课程.
一旦您满足于基本的c++编程技能,并准备好继续进行真正的交易, 你需要一个像这样的高级教程. 它涵盖了多态性, 模板, 异常处理, 流, 容器, 算法, 栈, 还有更多.
有时你所需要的只是一份丰富的问题和答案清单,你可以参考这些问题来解决你的问题.
这个基于web的教程是为想要过渡到c++的高级C程序员(或Perl或Java程序员——任何被认为具有“类C语法”的语言)设计的. 它在C结束的地方继续——比如at指针, 内存分配, 和复合类型——这使它成为一本非常好的c++编程指南.
当你在学习c++编程时编写更复杂的程序, 您可能很快就会遇到可维护性问题. 资深c++程序员的风格指南将派上用场. 本风格指南由谷歌维护.
还有一些很好的由社区主持的教程列表 学习C 和 学习c++ 对于那些想要深入研究的人来说.
书籍是详细学习编程语言的好方法. 有很多关于编程语言的复杂功能如何工作的解释, 从一本关于C或c++的好书中获得的知识可以让你在项目中使用这些语言时占上风.
虽然这本书确实包含了C语言的一小部分介绍, 如果你刚刚入门,它更适合作为第二本书. 这本书提供了一些技巧, 技术, 例子, 和实用的建议,将允许高级开发人员最大化他们的能力.
这本书分为三个部分. 第一部分从最严格的意义上描述C语言, 第二部分描述了标准库, 第三部分描述了使用流行的GNU软件集合中的工具编译和测试程序的过程.
C in a Nutshell是……的完美伴侣 C程序设计语言 Brian Kernighan和Dennis Ritchie(又名K&R).
这是Kernighan和Ritchie原版的第二版.
它通常被称为新约, 因为它包括了由ANSI标准合并的修改,同时保留了第一版的性质.
本书假定读者具有一些基本的编程知识. 如果你刚开始编程,C是你的第一门语言, 这本书可能不适合你. 然而,你可能会发现 这些浓缩笔记 有价值的.
这是入门C编程的最佳途径之一,也是必备品——尤其是如果你开始收集编程书籍的话.
Bjarne Stroustrup是c++的设计者,写了很多关于这门语言的好书.
这本书分为三个部分. 第一部分提供了c++编程的教程介绍, 第二部分介绍了使用c++时出现的设计和软件开发问题的精华, 第三个是一个完整的参考.
随着c++的普及, several independent distributors of the 朗uage have emerged but the book presents “pure C++”; that is, 它不使用依赖于实现的扩展.
学习一门编程语言的最好方法之一就是编写与你所学专业相关的小程序. 在每一章的最后都有一些练习来应用你新学到的知识.
用c++构建大型软件需要设计和纪律. 如果你对c++很认真,这本书是一本必读的书.
它是设计有效课程的专家指南, 功能, 模板, 继承层次结构. 本书还讨论了c++与其他语言的不同之处,以及如何“用c++的方式”做事.”
如果您已经有c++的经验,但想要测试其最新的标准, 读这本书. 您将会对c++的发展感到惊讶. 本书详细介绍了如何最有效地利用c++中的新功能. (尽管c++标准现在是 C++17在许多项目环境中,c++ 14仍然是最前沿的.)
c++最令人惊奇的一个方面是它的标准模板库(STL)。. 这是最强大的功能之一,它可能相当复杂. 这本书提供了50个很棒的技巧和100多个算法,探索了STL的不同领域, 使库对刚开始使用c++的开发人员更容易接近.
c++入门是一本很棒的书,将使学习c++变得有趣. 虽然它是最好的c++书籍之一, 它假定您非常熟悉编程概念并精通C语言.
对于想要充分利用新功能和高级功能的程序员来说,最新版本是非常好的.
这本书包含了关于编程、设计、分析和测试的约500个问题的答案. 它不是为初学者准备的——它是为那些已经弄清楚语言语法并想要实现它们的程序员准备的.
如果你有这样的问题“什么是类不变量?、“我应该如何使用异常。?,以及“执行析构函数时会发生什么”?,这是给你的书.
C编程是使用C语言编写源代码, 然后被编译成程序. C比c++更古老,在各种环境中仍然是一种非常流行的软件开发语言.
每个人的学习方式都不一样,但一定程度的“边做边学”可能是明智的. 现在,你可以从在浏览器中尝试简单的C程序开始. 还有很多视频课程, 免费的教程, 书, 以及帮助你确定如何最好地学习的社区.
两者有很多不同之处(也有相似之处)。. C语言是两种语言中较老的一种. Java被编译成任何平台上的虚拟机都可以读取的“字节码”, 而不是像C这样的本机机器码(但两者在某种程度上都是可移植的). Java是面向对象和垃圾收集的. C比Java低级.
如果你问10个程序员,你会得到至少10个答案. 这取决于你的背景和目标. 然而,C/ c++已经存在了很长一段时间,并且仍然是使用最多的语言之一. 尽管有“最佳”的说法,但学习C或c++绝对值得.
最大的区别是c++支持面向对象编程.
贝尔实验室的Bjarne Stroustrup于1979年开始开发c++, 但直到1998年才被ISO正式标准化. ISO继续发布标准,其中最新的是c++ 20. 下一个计划的标准是c++ 23.
C语言仍然广泛用于操作系统, web浏览器, 办公软件, 视频游戏, 硬件驱动程序, 在应用程序. 由于它可以编译为本机机器码,因此通常在性能要求很高的情况下使用.
世界级的文章,每周发一次.
世界级的文章,每周发一次.