我们编写的C代码是怎样跑起来的?

C语言文章更新目录

C/C++学习资源(百度云盘链接)
计算机二级资料(过级专用)
C语言学习路线(从入门到实战)
编写C语言程序的7个步骤和编程机制
C语言基础-第一个C程序
C语言基础-简单程序分析
VS2019编写简单的C程序示例
简单示例,VS2019调试C语言程序
C语言基础-基本算法
C语言基础-数据类型
C语言中的输入输出函数
C语言流程控制语句
C语言数组——一维数组
C语言数组——二维数组
C语言数组——字符数组
C语言中常用的6个字符串处理函数
精心收集了60个C语言项目源码,分享给大家
C语言核心技术——函数

要想弄明白这个问题,首先我们得了解下C语言的编程机制,关于编程机制我在前面的文章中提到过,但没有过多的描述,今天我们就一起来看看这个问题。

我们先写一个hello.c文件

#include

int main() {
	printf("hello world!");
	return 0;
}

这个文件其实是一个特殊的文本文件,就存在我们的磁盘上,被称为源代码文件
在这里插入图片描述

源代码文件是不能直接运行的,而我们平时运行的文件是可执行文件。

那么,源代码文件经过怎样的变化才能变为可执行文件呢?先思考一分钟。。。

C语言是通过编译和链接两个步骤完成这一过程。编译器把源代码转换成中间代码hello.obj,链接器把中间代码和其它代码合并,生成可执行文件。这里所说的中间代码就是目标文件,它里面存放的是机器语言代码。
我们编写的C代码是怎样跑起来的?_第1张图片

说到这里,有人就会问目标文件里存放的是机器语言代码,为什么不能直接运行目标文件呢?

其实目标文件里存放的只是编译器翻译的源代码,还不是一个完整的程序。

目标文件缺少启动代码和库代码,启动代码因系统不同会有所差异。几乎所有的C程序都要C标准库中的函数,例如hello.c中的printf()函数,这个函数真正的代码存储在一个被称为库的文件中。

链接器的作用就是将目标文件、启动代码和库代码合并成一个可执行文件hello.exe

运行可执行文件,我们会看到下面的结果。
在这里插入图片描述

为了更好的理解,这里画了一个流程图供大家参考。
我们编写的C代码是怎样跑起来的?_第2张图片

好了,今天就介绍到这,后面继续更新

你可能感兴趣的:(C语言)