Skip to main content

Intro

通过这个板块,我们会学习 C语言 的基础知识

前置知识

正式开始 以及 环境配置 之前,我们先使用经典的 Helloworld 来对 C语言有一个大概的认识

我们创建一个文件 Helloworld.c ,这是其内容:

#include <stdio.h>

int main()
{
    printf("Hello, World! \n"); 
    return 0;                           /*表示退出程序终止 main() 函数,并返回值 0*/
}

代码解释:

  • 这段代码的功能是在控制台输出一句 Hello, World! 并换行

  • 所有的 C 语言程序都需要包含 main() 函数。 代码从 main() 函数开始执行。

  • stdio.h 是一个头文件 (标准输入输出头文件) , #include 是一个预处理命令,用来引入头文件。

    当编译器遇到 printf() 函数时,如果没有找到 stdio.h 头文件,会发生编译错误。

  • 字符串应该用双引号而不是单引号,因为在C语言中,单引号用于字符字面量(例如 'a'),是单个字符,并且是整数类型。双引号用于字符串字面量(例如 "hello"),表示字符数组。

  • C 语言的标准库(如 stdio.h)通常由 编译器提供,不需要单独安装。


这种以 .c 结尾的文件,叫做 C语言的 源文件,里面包含的就是源代码

如果你学过 Python,你应该知道在运行代码前,需要从网上下载并安装 Python 的安装包。

但是 C 语言不需要像 Python 那样安装运行时环境,那 C语言 是怎么运行的呢?


具体地说,上面这个 Helloworld.c 文件是如何运行的呢?

C 语言的运行 分为两个主要阶段

  • 编译阶段(转换成机器码):

    需要一个名为 编译器 的工具,把 使用C语言写的源代码 重新写成 计算机可以直接读懂的 机械码。所谓的 机械码,就是我们在日常科幻电影中看到的 "1001011" 这样的0和1的 二进制组合(我们知道计算机的底层逻辑就是无数个“是”或“否”, 1 表示是,0 表示否)。

  • 运行阶段(执行二进制文件)

    上一步生成的 机械码 直接由 CPU 执行,是计算机能理解的 二进制指令。同时由于他完全由0和1构成,人类是无法直接理解的。


而 Python则不同,我们安装的 Python安装包中已经包含了一个名叫 IDE 的工具,也就是 Python解释器(如 python.exe),他的作用是把 Python 里的代码逐行翻译成 C 语言,然后再自动把 C 语言逐行翻译成 机器码,然后自动运行 机器码。中间存在层层的翻译,这就是为什么Python 这么简单方便(因为不用考虑编译),但是运行速度这么慢。

总而言之:

语言类型运行方式
Python解释型语言代码逐行解释执行,需要安装 Python 解释器
C 语言编译型语言代码先编译成二进制,然后运行,无需额外运行时
tip

这里为了便于理解,简化了 Python 的实际运行过程。其实Python 的实际运行流程更复杂,并不是直接翻译成C语言然后编译的。然而一般使用Python进行编程不需要像使用C 一样对运行的流程非常了解,因为Python 是高度封装的。实际的 Python运行流程如下(仅供了解)

Python 有两种运行模式:解释模式编译模式

解释模式:我们可以直接在命令行中 输入python 来进入解释模式,其运行流程如下

  • Python 解释器(如 CPython)会逐行解析代码并直接执行。
  • 解析时会转换成 字节码(bytecode)(字节码是一种 介于 Python 代码和机器码之间的中间代码。)
  • 字节码不保存,直接由 Python 虚拟机(PVM, Python Virtual Machine) 解释执行。

编译模式:对于一个写好的脚本 hello.py,使用命令 python hello.py 来运行,流程如下:

  • 解析 Python 源代码(hello.py)。
  • 编译成字节码(存储为 .pyc 文件)。
  • Python 虚拟机(PVM)执行字节码,最终由 CPU 执行对应的 机器码。

回到 C语言,我们刚刚说到 C语言本身不需要安装,但是需要一个名为 编译器(如 GCC、Clang、MSVC) 的工具,把源代码翻译成 机械码。

因此我们首先需要学会的就是如何安装和使用 编译器