C语言和C++的区别(通俗易懂,新手必读)

C语言和 C++ 都是非常流行的编程语言,通常都位于世界编程语言排行榜(TIOBE)的前 5 名。它们的名字都以字母“C”开头,看起来有着千丝万缕的联系。

不错,C++ 确实是在 C语言的基础上发展而来的,它们之间是包含与被包含的关系。

C++ 读作“C加加”,是“C Plus Plus”的简称。顾名思义,C++ 就是在 C语言的基础上增加了新特性,玩出了新花样,所以才说 Plus;而且有两个 plus,足见 C++ 增加了很多新东西。这就像 Nokia 和 iPhone、手动变速箱和自动变速箱的关系。

C语言是 1972 年由美国贝尔实验室开发成功的,在当时算是高级语言,它的很多新特性都让汇编程序员羡慕不已,就像今天的 Golang 和 Rust,刚出生就受到追捧。C语言也是“时髦”的语言,后来的很多软件都用C语言开发,包括 Windows、Linux、macOS、MySQL、Python 等。

但是随着计算机性能的飞速提高,硬件配置与几十年前已有天壤之别,软件规模也不断增大,很多软件的体积都超过 1G,例如 PhotoShop、Visual Studio 等,用 C语言开发这些软件就显得非常吃力了,这时候 C++ 就应运而生了。

C++ 主要在 C语言的基础上增加了面向对象和泛型的机制,提高了开发效率,以适用于大中型软件的编写。

C和C++的血缘关系

早期并没有“C++”这个名字,而是叫做“带类的 C”。“带类的 C”是作为 C语言的一个扩展和补充出现的,目的是提高开发效率,如果你有 Java Web 开发经验,那么你可以将它们的关系与 Servlet 和 JSP 的关系类比。

这个时期的 C++ 非常粗糙,仅支持简单的面向对象编程,也没有自己的编译器,而是通过一个预处理程序(名字叫 cfront),先将 C++ 代码“翻译”为 C语言代码,再通过 C语言编译器合成最终的程序。

随着 C++ 的流行,它的语法也越来越强大,已经能够很完善的支持面向对象编程和泛型编程。但是一直也没有诞生出新的 C++ 编译器,而是对原来 C编译器不断扩展,让它支持 C++ 的新特性,所以我们通常称为 C/C++ 编译器,因为它同时支持 C 和 C++,例如:

  • Windows 下的微软编译器(Visual C++);
  • 在 Linux 上广泛应用的 GCC 编译器;
  • 跨平台且高性能的 Clang 编译器。

也就是说,你写的 C、C++ 代码都会通过一个编译器来编译,很难说 C++ 是一门独立的语言,还是对 C的扩展。

关于C++的学习

C++ 语法繁杂,是最恶心的编程语言,没有之一。如果针对没有任何编程经验的读者写一本 C++ 的书,那将是一项不小的任务,写出来的书也会非常厚。即使这样,也仅仅是在讲语法。

更重要的是,这些知识你很难全部吸收,会严重打击你的信心,失去学习的兴趣。

从“学院派”的角度来说,C++支持面向过程编程、面向对象编程和泛型编程,而C语言仅支持面向过程编程。就面向过程编程而言,C++ 和 C 几乎是一样的,所以学习了C语言,也就学习了 C++ 的一半,不需要从头再来。

C++和C语言的关系

图:C++ 和C语言的关系

没有任何编程基础的读者,我建议先从C语言学起,不要贪多嚼不烂。等你熟悉了C语言,能写出上百行代码的程序了,就对编程有些概念了,这个时候再去了解 C++ 增加的那一部分内容(也即面向对象编程和泛型编程),你就站在了一定的高度,学起来不会那么吃力了。

总结

C++ 和 C语言有着血缘关系。C++ 在 C 语言的基础上发展而来,增加了很多新特性和新功能,比C语言更加强大,可以认为:C++ 几乎完全包含了 C语言,而 C语言也可以看做 C++ 的一部分。

C++ 源文件的后缀是 .cpp,C语言源文件的后缀是 .c,你在 .cpp 文件中写 C语言代码通常也是没问题的。但是请注意,C++ 仍然舍弃或者改变了极少量的 C语言特性,所以在实际开发中,我们最好还是要区分 C++ 和C语言的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值