C语言简介
C 语言由 Dennis Ritchie 在 1972 年在贝尔电话实验室开发,主要作为一种系统编程语言(一种用于编写操作系统的语言)。Ritchie 的主要目标是生成一种易于编译、允许有效访问内存、生成高效代码并且独立(不依赖其他程序)的简约语言。对于高级语言来说,它的设计目的是为程序员提供很多控制权,同时仍然鼓励平台(硬件和操作系统)独立性(即不必为每个平台重写代码)。
C 最终变得如此高效和灵活,以至于在 1973 年,Ritchie 和 Ken Thompson 使用 C 重写了大部分 Unix 操作系统。许多以前的操作系统都是用汇编语言编写的。与汇编产生只能在特定 CPU 上运行的程序不同,C 语言具有出色的可移植性,使 Unix 可以轻松地在许多不同类型的计算机上重新编译并加速其采用。C 和 Unix 的命运紧密相连,而 C 的流行在一定程度上与 Unix 作为操作系统的成功息息相关。
1983 年,美国国家标准协会 (ANSI) 成立了一个委员会,为 C 制定正式标准。1989 年(委员会花了很长时间做任何事情),他们完成并发布了 C89 标准,通常称为 ANSI C。 1990 年,国际标准化组织 (ISO) 采用了 ANSI C(进行了一些小的修改)。这个版本的 C 被称为 C90。编译器最终变得符合 ANSI C/C90 标准,并且需要最大可移植性的程序也按照此标准进行编码。
1999年,ISO委员会发布了C的新版本,称为C99。C99 采用了许多已作为扩展进入编译器或已在 C++ 中实现的功能。
C++简介
C++(发音为“see plus plus”)是由贝尔实验室的 Bjarne Stroustrup 于 1979 年开发的,作为 C 的扩展。C++ 为 C 语言添加了许多新功能,但最好将其视为 C 的超集。这并不完全正确(因为 C99 引入了一些 C++ 中不存在的功能)。C++ 的声誉主要源于它是一种面向对象的语言。至于什么是“对象”以及它与传统编程方法有何不同,我们将在后面的章节中介绍。
C++ 于 1998 年由 ISO 委员会标准化(这意味着 ISO 标准委员会批准了一份描述 C++ 语言的文档,以帮助确保所有编译器遵守同一组标准)。该语言的一个小更新于 2003 年发布(称为 C++03)。
此后,C++ 语言(C++11、C++14、C++17、C++20 和 C++23)进行了五次重大更新,每次都添加了附加功能。C++11 特别添加了大量新功能,被广泛认为是该语言的新基线版本。未来该语言预计每三年左右升级一次。
该语言的每个新的正式版本称为语言标准(或语言规范)。标准以发布年份命名。例如,没有 C++15,因为 2015 年没有新标准。
C和C++相似之处
- 这两种语言都有相似的语法。
- 两种语言的代码结构相同。
- 两种语言的编译是相似的。
- 它们共享相同的基本语法。几乎所有 C 的运算符和关键字也出现在 C++ 中,并且执行相同的操作。
- C++ 的语法比 C 稍有扩展,但基本语法是相同的。
- 两者的基本内存模型非常接近硬件。
- 这两种语言中都存在相同的堆栈、堆、文件范围和静态变量的概念。
C和C++的区别
C++ 通常被视为 C 的超集。 C++ 也被称为“带有类的 C” 这在 C++ 最初创建时几乎是正确的,但是随着时间的推移,这两种语言随着 C 的选择而不断发展。增加了许多在当代版本的 C++ 中未找到或尚未出现在任何 C++ 版本中的功能。也就是说,C++ 仍然主要是 C 的超集,添加了面向对象编程、异常处理、模板化和更广泛的标准库。
下表列出了 C 和 C++ 之间的一些更明显和一般的差异。语言之间以及语言版本之间存在许多更细微的差异。