C 与 C++:异同

C 语言是 C++ 的基石。尽管 C++ 在桌面应用和游戏开发领域应用更为广泛,但对于软件开发新手来说,从 C 语言入手是一个绝佳的选择。本文将阐述其中的原因。

什么是 C 语言?

C 是一种结构化的高级编程语言。 用 C 语言编写的程序具有良好的可移植性。C 语言因其强大的功能而至今仍是最流行的编程语言之一。它被广泛应用于各种复杂的程序,例如嵌入式系统、设备驱动程序、操作系统内核、系统应用程序、诸如 Microsoft Windows 和 Apple macOS 等操作系统、MySQL 等数据库,以及一些物联网应用。

C 是一种编译型语言,在机器码和程序之间提供了一层抽象。

以下是一个简单的 C 程序示例,用于计算两个数字的和:

#include<stdio.h>
int main()
{
int a, b, sum;
printf("请输入两个数字进行相加:");
scanf("%d%d", &a, &b);
sum = a + b;
printf("n%d 和 %d 的和是 %d", a, b, sum);
return 0;
}

程序输出如下所示:

C 程序示例的输出

此 C 程序包含了 stdio.h 头文件,它是标准输入输出库。

STDIO 库提供了基本的输入输出功能,如 printfscanf 函数。 printf 用于在控制台上打印信息(例如消息或输出结果),而 scanf 用于从控制台获取输入。我们使用 %d 来表示数字是整数。

如果输入的是小数,程序可能会给出意外的结果。 为了避免这种情况,可以使用 %fmain() 函数是程序运行时首先执行的函数。 语法很简单:先声明变量类型,然后使用它们。

什么是 C++ 语言?

C++ 基于抽象、多态、继承和封装等面向对象的编程原则。 可以将 C++ 看作是在 C 语言基础上扩展了类和对象的概念。

使用对象存储数据为程序提供了一种清晰的结构。 例如,如果要存储学生的详细信息,可以创建一个 Student 类,并在该类中定义姓名、年龄、爱好、成绩等属性。 您可以在需要时创建具体的学生对象!

class Student {
public:
char name[20];
int age;
float marks;
};

// 这将创建一个对象
Student student1 = new Student();

实际上,对象只会在运行时创建并分配内存。

C++ 提供高性能,这也是为什么即使在今天,它仍然是开发高性能游戏引擎、嵌入式系统、浏览器、编译器和基于图形的应用程序(如图像处理)的首选语言。

一些数据库,如 MongoDB,也是用 C++ 编写的。 与 C 语言一样,C++ 也具有可移植性。

让我们用 C++ 编写之前用于求和的程序,注意其中的不同函数。

#include <iostream>
using namespace std;
int main() {
int a, b;
cout << "输入两个数字:";
cin >> a >> b;
int sum = a + b;
cout << a << " + " << b << " = " << sum;
return 0;
}

请注意,我们使用的是 coutcin,而不是 printfscanf。 此外,可以在使用变量之前的任何位置声明变量类型(例如变量 sum)。 输出语句非常简单,只需要变量名。 另外,请注意我们使用了 iostream 头文件中的命名空间 stdstd 命名空间包含了 coutcin 等方法。

C 和 C++ 的相似之处

可以说 C 是 C++ 的一个子集。C 和 C++ 在程序编写方式和应用领域上有很多相似之处。两者都具有健壮性、可移植性和高性能。一些重要的相似之处包括:

序号 特性 说明
1 语法 两者的语法非常相似,例如变量声明、行尾分号、命名约定等。
2 结构和程序 每一行代码都是逐行执行的。程序的结构如下:首先是头文件包含,然后是变量声明,最后是主代码。
3 main() 函数 所有需要执行的代码都应该放在 main() 函数中。 main() 函数是程序执行过程中第一个调用的函数。
4 指针 C 和 C++ 都以相同的方式使用指针。指针是存储另一个变量内存地址的变量。例如:int a = 1;。执行此代码后,会为 a 分配内存(例如 XX0011)。可以通过使用 & 符号来访问 a 的内存地址,例如 int ptr_a = &a;
5 关键字和运算符 C 中使用的所有关键字和运算符在 C++ 中都有效。例如,scopestaticpublicint 等。C++ 还有额外的运算符和关键字。

C 和 C++ 的相似之处

C 和 C++ 的不同之处

C++ 的出现是为了克服 C 语言的一些缺点,它是 C 语言的超集。因此,任何用 C 语言编写的程序都可以在 C++ 中运行,但反之则不然。C 和 C++ 之间的主要区别在于 C++ 基于面向对象的编程原则(OOP)。此外,C++ 中更强调类型检查。还有一些更细微的区别,如下表所示:

C C++
由 AT&T 贝尔实验室的 Dennis Ritchie 于 1969-1973 年间开发。 由 Bjarne Stroustrup 于 1979 年开发。
不遵循面向对象的编程原则。 基于面向对象编程(OOP)的概念,如封装、多态和继承。
C 包含 32 个关键字,例如 charswitchintstaticunion 等。 所有 C 语言的关键字在 C++ 中都有效,此外还有 31 个额外的关键字。
只支持过程式编程。 C++ 支持多种编程范式,如面向对象编程、泛型编程和函数式编程。
无法在 C 语言中实现 OOP 的特性。 像友元(friend)和虚函数等特性增强了 C++ 的 OOP 本质。
C 支持内置数据类型。 C++ 通过类的概念,同时支持内置数据类型和用户自定义的数据类型。
不提供运算符或函数重载。 C++ 同时支持运算符和函数重载(多态)。
内存分配通过 malloc()calloc() 函数完成,释放内存使用 free() 内存分配使用 new 操作符,释放内存使用 delete 操作符。
C 不支持异常处理。 C++ 支持异常处理。
更关注过程或方法。 更关注数据。

C 和 C++ 的区别

其他一些只存在于 C++ 中的重要特性包括:

  • 使用 namespace 关键字,可以在不同的命名空间中创建同名的变量。
  • 可以在结构体中使用函数。结构体也可以有访问修饰符。
  • 支持引用变量。

何时使用 C 或 C++?

这是一个程序员之间非常常见的争论:既然可以用 C++ 完成所有事情,为什么还要学习 C 语言?

学习 C 语言可以为理解数据结构、指针、关键字、堆栈、堆和内存分配等概念打下坚实的基础。

此外,C 语言仍然被广泛应用于高性能应用程序,因为 C 编译器比 C++ 编译器更快。因此,如果想要编写不需要对象、类、虚函数或模板的代码块,请选择 C 语言,因为 C++ 庞大的库可能会显得过于复杂。

大多数低级编码,如操作系统内核和数据库,仍然使用 C 语言进行维护,因此了解 C 语言也有助于更快地学习 C++。

C++ 被认为是速度最快、效率最高的语言之一,这就是为什么它仍然是顶级的编程语言之一,特别是在游戏引擎、物联网设备和桌面应用程序等高性能应用程序领域。许多应用程序使用 C 和 C++ 代码的组合,以实现最佳的性能和面向对象编程的优势。

总结

本文通过简单的示例程序介绍了 C 和 C++ 的基础知识。我们讨论了这两种语言之间的主要区别和相似之处,以及何时使用它们。

如果你刚刚开始你的软件开发之旅,那么从 C 语言开始会增强你的信心,因为它简单易懂,并涵盖了所有重要的编程概念,如数据结构、指针和内存等。

你可能对使用 techblik.com 的在线 C 编译器和 C++ 编译器感兴趣。