文章目录
- 编写C文件
- 创建文本文件
- 编写代码
- 修改文件后缀
- 切换文件路径
- 编译代码
- 打开命令行
- 使用gcc编译代码
- 运行程序
- 双击运行
- 使用命令行运行
- 代码分析
- 编译过程
编写C文件
编辑C代码文件的工具有很多,为了让大家初学的时候摆脱编译软件的干扰,更容易理解编译过程。本次我们使用记事本编辑,gcc编译第一个C代码文件。
书上本章内容太过跳跃,我在此新加一个过渡章节,用于解析一个最简单的代码框架。
创建文本文件
首先,创建一个文本文件,取个英文名字,我这里取名为==“main”==。
编写代码
然后,双击打开文件,将以下内容敲进去(拷贝),然后保存文件
#include<stdio.h>
int main()
{
printf("Hello World\n");
getchar();
return 0;
}
修改文件后缀
右键选中文件,重命名文件,修改文件后缀txt为c,弹出以下窗口,选择==“是”==。如果看不到后缀名,可询问度娘,不同系统修改方法略有差异,不过没有难度,按照步骤修改即可。
切换文件路径
为了方便,首先将创建的main.c文件拷贝到一个干净的文件夹,这里我将main.c放在了一个新的文件夹E盘下的NEW文件夹。
编译代码
为了演示编译的过程,本次编译代码使用的是MINGW中的gcc,如果没有安装的可以在网上找到教程,大家也可以使用VS Code安装教程中MinGW的安装过程来安装。
只需要一下几步就可以。
- 下载
- 解压
- 放到文件夹下
- 在环境变量的path中,添加解压后的bin文件路径全称。
打开命令行
命令行打开的方法我推荐这一个,比较简单:
打开上方的导航栏输入框,输入==“cmd”==,然后双击键盘的“Enter”键。
双击键盘的“Enter”键后会打开一个命令行的黑窗口,此时窗口是当前文件夹的路径,我的是E盘的NEW文件夹。
使用gcc编译代码
在黑窗口输入==“gcc main.c”==,然后点击回车(Enter)键。查看文件夹下多了一个文件,名称是“a.out”,这个文件图标是一个默认的应用图标。
运行程序
双击运行
双击运行一下,会弹出一个黑窗口,显示了“Hello World”,然后在这个黑窗口按下键盘上的任意按键,窗口会显示运行结束信息,有的系统可能会一闪而过。
使用命令行运行
在命令行输入程序名称a.exe,然后按下键盘的回车“Enter”,键盘,窗口也会显示出来字符。
此时按下任意按键,程序退出。我输入的是字符A
代码分析
现在已经运行了一个程序,有没有发现黑窗口显示的那句话是在main.c文件中写的内容呢,下面我们来介绍一个这几行代码;
#include<stdio.h>
第一行的作用是导入一个名字叫“stdio.h”的文件,导入这个文件的原因是我们要用这个文件里的东西(函数)。其实这个导入也是很简单的操作,就是将“stdio.h”中的文件内容复制到我们的main.c里面来了。
int main()
第二行是程序执行的入口。简单来说就是要执行函数,要一句一句的执行,执行的时候第一行代码是从main()执行的。执行完以后会返回一个int类型的元素,有关详细的内容会在函数章节讲。这里只需要记住main函数是C程序的入口。()也有讲究,如果你看过别人的代码会发现这里面有一些内容,这里我们先不介绍,也留到函数部分讲解。
{
}
括号部分就是将代码括起来,告诉计算机,{}里面的内容是属于main函数的。
printf("Hello World\n");
这一行的作用就是吧Hello World显示出来,printf就是我们第一行导入的stdio.h文件里的。\n是一个特殊字符,在这里的作用就是换行,;标志着这一句代码的结尾。
getchar();
这一行也是我们第一行导入的stdio.h文件里的,在这里的作用是从键盘获取一个字符,如果不按按键就会一直在这个界面,这就是为什么要你们输入一个字符的意义。有的系统不加这一句,黑窗口就一闪而过了。;标志这一句的结尾
return 0;
这一行的作用是告诉计算机,main函数结束了,返回了一个数字0。;标志这一句的结尾。
编译过程
上面的内容如果有点吃力是正常的,刚刚接触很多思维还没有发散,后面我们会将这里的每一个作用都详细的阐述,随着后面的学习会更理解这些内容的。
上面我们只一步gcc main.c就生成了可执行文件。其实计算机执行的时候执行了4个步骤,分别是:
- 预处理
- 编译
- 汇编
- 链接
这四步的具体每一步做了什么将在下一篇文章讲解。看完之后试着把本节的代码自己编写运行一遍,也可以试着修改输出的内容,自己尝试运行看看,修改完文件以后一定要先用gcc编译重新生成文件,否则运行的文件还是旧的文件哦。
尝试运行以下代码,看看有什么变化
#include<stdio.h>
int main()
{
printf("Hello World\n");
getchar();
printf("Hello World\n");
return 0;
}
#include<stdio.h>
int main()
{
printf("Hello World");
getchar();
printf("Hello World\n");
return 0;
}