C语言基础

一、第一个C语言程序

C语言主要包括一下部分:

1.预处理指令

2.函数

3.变量

4.语句&表达式

5.注释

C语言第一个程序:

学会输出“Hello World”,C语言入门%50,哈哈...

文件:hello.c

程序解读:

1.程序的第一行#include <stdio.h>是预处理指令,告诉我们的编译器在编译之前要包含stdio.h这个文件。

2.int main()是主函数,程序开始执行的地方。

3.程序中的/*....*/是注释,用来注释内容,他们不会被编译。

4.printf(...)是C中的另一个输出函数,会在屏幕上显示消息“hello world”,后面的\n是换行符,指换到下一行。

5.return 0;终止main()函数,返回一个0。

编译与执行

如何把源代码保存在文件中,并编译运行它?

1.打开一个文本编译器,添加上述代码。

2.保存文件为hello.c。

3.打开终端,进入到保存文件所在的目录。

4.键盘上输入gcc hello.c命令,回车,编译代码。

5.如果代码没出错,命令提示符会调到下一行,并生成a.out(Linux操作系统中)可执行文件。

6.输入./a.out文件来执行程序。

7.屏幕上会显示“hello world”。

案例:

 二、C语言编译过程

什么是编译?

C语言的编译过程可以理解为把高级计算机语言代码转换为计算机可以理解的机器代码的过程,也就是一个翻译的过程。

C语言的编译过程包括以下四个步骤:

(1)预处理(cpp)

(2)编译(as)

(3)汇编(gcc)

(4)连接(ld)

如下图所示,就是c程序编译的完整过程:

 各个编译过程都在干嘛呢?

(1)预处理

预处理结束后会产生一个后缀为(.i)临时文件,这一步由预处理器完成,预处理的主要完成任务:

①删除所有的注释

预处理会删除所有的注释,因为注释不属于程序代码,对程序没有特别的作用

②宏扩展

宏是使用#define指令定义的一些长常量值或表达式,宏调用会导致宏扩展。预处理器创建一个中间文件,其中一些预先编写的汇编级指令替换的表达式或常量(基本上都是匹配的标记)。为了区分原始指令和宏扩展产生的程序集指令,在每个宏展开语句中添加一个“+”号。

③文件包含

C 语言中的文件包含是在预处理期间 将另一 个包含一些预写代码的文件添加到我们的 C 程序中。它是使用
#include 指令完成的。在预处理期间包含文件会导致在源代码中添加 文件名 的全部内容,从而替换
#include< 文件名 > 指令,从而创建新的中间文件。

(2)编译

C语言中的编程阶段使用内置编译器软件将(.i)临时文件转换为具有汇编级指令的汇编文件(.s),为了提高程序的性能,编译器将中间文件装换为程序集文件。汇编代码是一种简单的英文语言,用于编写低级指令。

(3)汇编

使用汇编程序将程序集代码(.s)文件转换为机器可理解的代码(二进制、十六进制形式)。汇编程序是一个预先编写的程序,它将汇编代码转换为机器代码。它从程序集代码文件中获取基本指令,并将其转换为特定于计算机类型(也就是目标代码)的二进制、十六进制代码。生成的文件与程序集文件同名,在DOS中称为扩展名为.obj的对象文件,在UNIX操作系统重扩展名为.O。程序集文件hello.s将转换为具有相同名称但扩展名不同的对象文件hello.o。

(4)连接

链接是将库文件包含在我们的程序中的过程。 库文件 是一些预定义的文件,其中包含机器语言中的函数 定义,这些文件的扩展名为.lib 。一些未知语句写入我们的操作系统无法理解的对象 ( .o/.obj ) 文件 中。你可以把它理解为一本书,里面有一些你不知道的单词,你会用字典来找到这些单词的含义。同 样,我们使用库文件 来为对象文件中的一些未知语句赋予意义。链接过程会生成一个 可执行文件 ,其扩 展名为 .exe DOS 中为 .out ,在 UNIX 操作系统中为 .out
我们有一个具有机器级代码的对象文件,它通过链接器传递,链接器将库文件与对象文件链接以生成可执行文件。

下列是C语言编译过程的流程图:

 编译过程:

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值