C语言入门
从C语言简史开始,了解如何编写“Hello World”程序。
什么是 C 语言?
C 是一种高级编程语言,由贝尔实验室的丹尼斯·里奇(Dennis Ritchie)在20世纪70年代初开发。它提供了对硬件操作的精细控制,能够编写出高度优化的代码。正因如此,C 语言长期以来一直是系统编程的首选语言。
它是编写操作系统时的首选语言。Unix 是最早用 C 语言重写的操作系统之一(最初是用汇编语言编写的)。微软 Windows、Mac OS X 和 GNU/Linux 的核心代码也都是用 C 编写的,尽管这些操作系统在某些组件中也可能使用其他语言。
C 语言还有其他广泛应用。它适用于高性能计算。许多高级语言(如 Perl、PHP、Python、R、MATLAB、Mathematica 等)的编译器和解释器也是用 C 编写的。
一个 C 程序示例
下面是一个 C 程序的例子:
1#include <stdio.h> 2 3int main(void) { 4 printf("Hello world"); 5 return 0; 6}
上面这个程序是一个最基础的 C 程序,它的功能是将“Hello world”文本输出到屏幕上。可以看出,代码并不复杂。真正执行任务的是第 4 行代码。其余部分可以看作是每个 C 程序运行所必需的标准模板代码。
我们稍后会详细分析这段代码。现在,你只需记住三点:第一,第 3 到第 6 行定义了一个名为 main 的函数。main 函数是 C 程序运行所必需的。大括号 {} 包裹的内容是程序运行时要执行的所有语句。第二,第 3 行圆括号内的 void 是可选的,即使省略也不会影响程序运行。同样,第 5 行的 return 0; 也可以省略。我们在这里保留它们,是因为这是推荐的做法。第三,第 1 行导入了标准 C 库之一 stdio.h(标准输入/输出库)。
有了这些知识,我们不妨稍微偏离一下,看看其他编程语言中类似程序的写法,它们通常更简洁一些。但请不要因此感到气馁;C 语言有其独特的优势,我们接下来就会探讨。
更宏观的视角
作为对比,以下是用 Python 实现相同功能的代码:
1print("Hello world")
以下是用 R 实现的版本:
1cat("Hello world")
在 MATLAB/Octave 中:
1disp('Hello world')
可以看出,C 语言与其他语言的区别在于:在 C 中,我们必须显式导入 stdio.h 库并定义 main 函数。这并不是什么大问题。另一个区别是,不同语言中用于向屏幕输出内容的标准函数名称各不相同:C 中是 printf,Python 中是 print,R 中是 cat,MATLAB/Octave 中是 disp。同样,这也不是什么难以接受的差异。
我们希望你在本课程中学到的一点是:虽然存在少数例外,但几乎所有(过程式)编程语言都共享许多基本概念,例如使用函数来完成任务。然而,每种语言之间仍存在显著差异,这些差异会影响我们编写和理解代码的方式,包括:
- 标准函数的名称在不同语言中各不相同。
- 每种语言的规则(即语法)各不相同。
- 标准库提供的功能可能有很大差异。
- 某些语言特有的特性在其他语言中可能不存在。
然而,在 C 语言中培养的基础技能,比如代码组织能力和逻辑思维能力,具有很强的可迁移性,能帮助你更快地掌握其他编程语言。
接下来,我们将探讨 C 语言的一些优势与不足。在开始之前,请注意,本课程适合初学者,尽管如果你有一些编程经验,会对深入理解背景和上下文更有帮助。