C语言 基本架构

      下图体现了c语言中最基本的运行过程:

       整个过程可以简单描述为:1.将.c或.cpp文件进行预编译,形成.i文件,源文件还只是文本文件;

                                                  2.将.i文件进行编译,形成.o或.obj文件,此时文件是二进制文件;

                                                  3.将.o或.obj文件链接形成.exe文件,这时形成的文件才是可执行文件,也可以称为输出文件。

 

        由此可见,预编译、编译、链接是c语言执行的三个基本过程。具体来说,预编译是对所有#开头的进行展开,将#define定义的宏进行替换,删除所有无用的注释部位,但不进行词法、语法、语义的判断;等到编译过程,才对代码进行正确性的检验,整个过程相当于把高级语言翻译成机器语言;只有通过链接过程,源文件才能变成一个可执行文件。

        任何一个程序在执行的过程中都会把其代码、变量等储存在一个地方,在内存中分四个区域来储存,这四个区域分别是代码区、数据区、堆区和栈区,如下图所示:

       代码区中存放的是程序中的代码,不能修改它的值,只能通过指针或者变量名来使用函数。堆内存只在程序运行时出现。栈区由编译器自动分配释放 ,不同操作系统栈区空间一般不同,是一种先进后出的结构。

       凡是定义在函数之外的在数据区,在函数里面的在栈区,malloc之类的在堆区。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值