C 语言简介

先说一下编程语言的发展历史。

计算机是一个数字电路的硬件设备。要想让这个硬件设备按着我们预想的逻辑来运行,我们就需要给计算机设置一些硬件指令,计算机会严格按着这些硬件指令来执行。这些硬件指令可能是由一个字节、二个字节等不同长度的二进制数字组成。早期为了编写这些指令可以直接写二进制的代码,比如在有标记的纸带上打孔或不打孔来表示 1 或者 0,这样就可以驱动计算机硬件按着我们编写的逻辑运行并得到运行结果。我们把编写计算机逻辑指令的过程称为编程。 后来出现了汇编语言,用符号来代替 0/1 的代码,效率明显提高很多。再后来出现了 C 语言,C 语言能够将编码直接转化为汇编语言,并转化为 0/1 代码效率更进一步。用 C 语言编写的代码在编译的时候会自动计算各个变量的存放地址,并且可以根据硬件平台的不同转换成不同的汇编语言进行编译,进而降低了编程难度和代码的可移植性。再后来出现了解释执行类型的编程语言,让编程更加轻松,当然也会有效率上的损失,比如:Python、java 等。

C 语言是一种通用的、高效的编程语言。C语言是一门编译型的语言,所谓编译型语言是指你编写的 C 语言程序通过编译器最终编译成 处理器(也称为 CPU)能够直接执行的计算机指令。这些指令能在 处理器 中直接运行,而不在依赖任何的程序来运行。编译型的语言的特点是执行速度快,消耗内存少,甚至不需要有操作系统。

要学习 C 语言。我们先来介绍一下 C 语言的创始人。

C 语言是 丹尼斯·里奇(Dennis Ritchie) 在 1972 年于贝尔实验室开发。它最初用于重新实现 Unix 操作系统,后来因其高效性和灵活性而广泛应用于系统编程、嵌入式开发、游戏开发等领域。丹尼斯·里奇(Dennis Ritchie)也被称为 C 语言之父

作者:丹尼斯·里奇(Dennis Ritchie)

丹尼斯·里奇

为什么学 C语言

一直以来 C 、 C++ 和嵌入式开发等相关行业一直是成熟的、稳步发展的行业。相关的开发岗位人才缺乏、就业前景比较乐观。而 C 语言是这些领域的基础学科。

学习本课程将为您在嵌入式、智能硬件、物联网、人工智能底层算法实现、Linux 内核驱动等领域打下良好基础。

C 语言目前的状况

C 语言从诞生到现在有五十多年的历史。并且经久不衰,目前经 tiobe-index (最权威的编程语言排行网站) 的统计,截止 2025年11月,C 语言的排名是第二位,并且一直保持领先的位置。如下图所示:

2025年7月tiobe-index排行榜

下面是自 2002 年至今的 C 语言排名趋势图,可见近 20 年来 C 语言排名一直处于前列。

2002年至今,C 语言的排行趋势图

C 语言的应用场景

C 语言的主要特点

C 语言的优缺点

C 语言的标准

C语言有自己的编码标准,C语言的标准经历了多个版本的演进,每个版本引入了新的特性和改进。以下列出几种主要的C语言标准及其关键特性:

  1. ANSI C / C89 / C90(首个官方标准)
    • ISO/IEC 9899:1990(1990年,国际标准化组织采纳,称为C90)。
    • 基本确定了现代 C 语言的基本特征和关键字,如 void、enum、const、volatile和预处理指令#elif等。
  2. C99(ISO/IEC 9899:1999)
    • 新增了单行注释 //restrict 指针、 long long 类型、变长数组等。
  3. C11(ISO/IEC 9899:2011)
    • 引入了多线程支持 <threads.h>(但要依赖编译器)、匿名结构体/联合体等。
  4. 后续版本 C17 / C18 只是修正了前面版本的缺陷,无新功能
  5. C23(ISO/IEC 9899:2023)
    • 引入了 nullptr 代替 NULL(兼容C++)和 #elifdef 等预编译宏以及常量表格式 constexpr等。目前有部分编译器支持。

本课程参照 C11 标准(ISO/IEC9899:201x)官方文档编写。请各位自行搜索下载。参照如下:

C11标准官方文档第一页

本课程的教学环境

本课程使用 Linux 作为教学环境。以 GNU 的 C 语言编译器 gcc 作为编译器进行讲解。如果你是 Windows 操作系统或 MacOS 操作系统,请按第一章的内容来搭建相应的 C 语言开发环境。

Linux 是大厂公司最常用的操作系统,使用 Linux 环境已经是大势所趋。

本教程的案例均在 Ubuntu 24.04 LTS 上验证,学习本教程前请先自行安装 Ubuntu 24.04 LTS 操作系统或下载由本站制作的 VMware 虚拟机镜像。

Ubuntu24.04 VMware镜像:

Ubuntu下载和安装方法详见: Ubuntu Linux 简介

前置课程

在学习此内容之前你需要先学习 《Linux教程》。关于Ubuntu 操作系统的安装和虚拟机的下载和安装都在 《Linux教程》 中讲过,这里不在赘述。

版权声明

魏明择版权所有,未经作者本人允许不得在书刊和论坛等媒介转载、修改和出版。