文章目录
- C语言基础简介
- 编译方式
- 分布编译
- 示例流程
- 一步编译
- 代码运行
- 运行结果展示
- 实际代码
C语言基础简介
关于C语言的书籍,文章有很多。C的历史我不赘述,只讲C语言的基础语法和使用,帮助大家入门,同时也是自己学习过程的一个回顾。
首先,C语言是一门编译性语言。简单介绍下什么是编译性语言。我们学习的编程语言由机器语言->低级语言->高级语言演变。机器语言全是2进制的0101编写的,一般人根本看不懂,再往下的就是汇编语言,人类可以看懂,但是还不够简单,因为它跟硬件的耦合比较高,基本上换一套硬件平台就要换汇编指令,对开发者来说不太友好。再往后就是现在的高级语言。高级语言大致分为两种:
+ 编译性语言:比如C,C++
+ 解释性语言:比如Python,shell
编译性语言:编写的程序在执行之前有一个编译的过程,将高级语言文件编译成机器语言文件,在由计算机执行机器语言文件。一般我们使用的C语言编译器是gcc,MinGW等。
+ 优点:因为执行的过程中 无需重新编译 所以执行效率相对较高
+ 缺点:依赖编译器的类型及版本,跨平台性较差
解释性语言:不需要在执行前先编译,而是在执行的过程中,由解释器一行一行的将源代码翻译成二进制给计算机处理。
+ 优点:跨平台性相对较好
+ 缺点:每次执行都需要逐行翻译,执行效率相对较低。
编译方式
分布编译
介绍一下C语言编译的过程,分为四个步骤:
- 预处理
- 编译
- 汇编
- 链接
每个步骤执行不同的操作,需要不同的指令,分别是: - 预处理:将头文件展开,删除注释,宏定义替换
gcc -E xxx.c -o xxx.i
- 编译:检查语法,将.i文件翻译成汇编文件
gcc -S xxx.i -o xxx.s
- 汇编:将汇编文件生成目标文件
gcc -c xxx.s -o xxx.o
- 链接:链接库文件,生成可执行文件
gcc xxx.o -o xxx
示例流程
这是在终端的一个示例流程,红框中圈中的是执行的四条指令,黄框是执行指令后的文件夹中的文件。初始只有一个Test.c,最后一步生成了文件APP,注意的同学会发现,其他文件是白色,只有APP是绿色的,因为它是一个可执行的文件,类似于应用程序。
每个指令后面的-o xxx。实际上的效果只是给生成后的文件命名,如果没有这个,编译的文件名就是默认的。
一步编译
上面的步骤有没有觉得比较麻烦,还要记不同的指令。其实,还有另一种编译的方式,一步编译。顾名思义,只要一不就可以编译完成。下面给大家介绍以下这个语法。
gcc xxx.c -o xxx
看一下是不是只要一步就生成了可执行的文件,而且中间产生的那些 .i .s .o问价你都没有了。是不是比较方便呢,前期的时候为了解整个过程,还是建议先使用分布编译,后期熟练了可以使用一步编译(其实后面可能使用集成的软件根本不需要敲指令了,比如:Vs Code)。
代码运行
当根据上面步骤生成可执行程序时,使用执行指令或者使用装好的工具运行即可。
./xxx
运行结果展示
实际代码
下面把我在这个文章中的C程序中敲的代码给大家粘贴出来,可以先试着自己运行一下。
#include <stdio.h>
int main(int argc, const char *argv[])
{
printf("hello world\n");
return 0;
}