C编程语言简介及教程

168 阅读5分钟

C可能是最广为人知的编程语言。它被用作世界各地计算机科学课程的参考语言,而且它可能是人们在学校里与Python和Java一起学习最多的语言。

我记得它是我的第二种编程语言,仅次于帕斯卡。

C语言不仅仅是学生用来学习编程的。它不是一种学术语言。我想说它不是最简单的语言,因为C是一种相当低级的编程语言。

今天,C语言被广泛用于嵌入式设备,它为大多数互联网服务器提供动力,这些服务器是用Linux构建的。Linux内核是用C语言构建的,这也意味着C语言为所有Android设备的核心提供动力。我们可以说,C代码运行了整个世界的很大一部分。现在。相当了不起。

当它被创造出来的时候,C被认为是一种高级语言,因为它可以跨机器移植。今天,我们有点想当然地认为,我们可以在Windows或Linux上运行一个在Mac上编写的程序,也许使用Node.js或Python。很久以前,情况完全不是这样的。C语言带来的是一种易于实现的语言,它有一个编译器,可以轻松地移植到不同的机器上。

我说的是编译器。C是一种编译的编程语言,像Go、Java、Swift或Rust。其他流行的编程语言,如Python、Ruby或JavaScript是解释型的。两者的区别是一致的:编译语言生成的二进制文件可以直接执行和分发。

C语言是没有垃圾收集的。这意味着我们必须自己管理内存。这是一项复杂的任务,而且需要非常注意防止错误,但这也是C语言成为为Arduino等嵌入式设备编写程序的理想选择。

C语言并没有掩盖机器的复杂性和下面的能力。一旦你知道你能做什么,你就有很大的权力。

我现在要介绍第一个C语言程序,我们称之为 "你好,世界!"

hello.c

#include <stdio.h>

int main(void) {
	printf("Hello, World!");
}

让我们来描述一下程序的源代码:我们首先导入stdio 库(这个名字代表标准输入输出库)。

这个库让我们可以访问输入/输出函数。

C语言的核心是一个非常小的语言,任何不属于核心的东西都由库来提供。其中一些库是由普通程序员建立的,并提供给其他人使用。还有一些库是内置于编译器的。像stdio 和其他的。

stdio 是提供 函数的库。printf()

这个函数被包装成一个main() 函数。main() 函数是任何C程序的入口点。

但是,到底什么是函数呢?

一个函数是一个接受一个或多个参数,并返回一个单一值的例程。

main() 的例子中,该函数没有得到任何参数,并返回一个整数。我们用void 关键字表示参数,用int 关键字表示返回值。

该函数有一个主体,它被大括号包裹着,在主体中我们有该函数执行操作所需的所有代码。

正如你所看到的,printf() 函数的写法是不同的。它没有定义返回值,我们传递了一个用双引号包裹的字符串。我们没有指定参数的类型。

这是因为这是一个函数调用。在stdio 库的某个地方,printf 被定义为

int printf(const char *format, ...);

你现在不需要理解这意味着什么,但简而言之,这就是定义,当我们调用printf("Hello, World!"); ,这就是函数运行的地方。

我们上面定义的main() 函数。

#include <stdio.h>

int main(void) {
	printf("Hello, World!");
}

将由操作系统在程序执行时运行。

我们如何执行一个C语言程序?

如前所述,C语言是一种编译语言。要运行程序,我们必须首先编译它。任何Linux或macOS计算机已经内置了C语言编译器。对于Windows,你可以使用Windows Subsystem for Linux(WSL)。

在任何情况下,当你打开终端窗口时,你可以输入gcc ,这个命令应该返回一个错误,说你没有指定任何文件。

这很好。这意味着C语言编译器已经存在,我们可以开始使用它了。

现在把上面的程序输入到一个hello.c 文件中。你可以使用任何编辑器,但为了简单起见,我将在命令行中使用nano 编辑器。

输入该程序。

现在按ctrl-X ,退出。

y 键确认,然后按回车键确认文件名。

就这样,我们现在应该回到终端了。

现在输入

该程序应该不会出现错误。

但它应该已经生成了一个hello 可执行文件。现在输入

来运行它。

我在程序名称前加上./ ,以告诉终端该命令是在当前文件夹中。

真棒!现在,如果你调用 ,你就会发现,它是一个可执行的程序。

现在,如果你调用ls -al hello ,你可以看到该程序只有12KB大小。

这是C语言的优点之一:它高度优化,这也是它适合于资源非常有限的嵌入式设备的原因之一。

请看我的其他一些C语言教程。