运行c程序的流程

运行c程序的流程,第1张

以VC60为例:写好代码以后依次点击:

编译(Compile):

组建(Build):

运行(BuildExecute):

图标就可以运行C程序了!

/程序的功能是,求2到最大整数之间所有的质数/

#include<stdioh>

int main(void)

{

/定义一个整数,接收最大的范围/

int zhengshu;

/循环控制变量/

int n,j;

/用来记录是否是质数, 0是,1不是/

int sign = 0;

/输入整数,如果不是整数退出/

while (scanf_s("%d", &zhengshu)==1)

{

for (n = 2; n<= zhengshu; n++)

{

for (j = 2; j <= n; j++)

{

/2-n内有约数,不是质数,sign= 1;这里可以优化,if里面if (n % j == 0 )这样就行,然后for里面j < n/

if (n % j == 0 && j != n)

sign = 1;

break;

}

/果是质数,输出/

if (sign == 0)

{

printf("%d,\n", n);

}

/下一个数,sign重新初始化为0/

sign = 0;

}

printf("请输入正整数:");

}

return 0;

}

一、编译时与运行时的内存情况

1编译时不分配内存

编译时是不分配内存的。此时只是根据声明时的类型进行占位,到以后程序执行时分配内存才会正确。所以声明是给编译器看的,聪明的编译器能根据声明帮你识别错误。

2运行时必分配内存

运行时程序是必须调到“内存”的。因为CPU(其中有多个寄存器)只与内存打交道的。程序在进入实际内存之前要首先分配物理内存。

3编译过程

只能简单说一下,因为如果要详细的话,就是一本书了《编译原理》。编译器能够识别语法,数据类型等等。然后逐行逐句检查编译成二进制数据的obj文件,然后再由链接程序将其链接成一个EXE文件。此时的程序是以EXE文件的形式存放在磁盘上。

4运行过程

当执行这个EXE文件以后,此程序就被加载到内存中,成为进程。此时一开始程序会初始化一些全局对象,然后找到入口函数(main()或者WinMain()),就开始按程序的执行语句开始执行。此时需要的内存只能在程序的堆上进行动态增加/释放了。

各区段功能说明:

1、程序代码区:存放函数体的二进制代码。

2、全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 程序结束后由系统释放。

3、文字常量区 :常量字符串就是放在这里的。 程序结束后由系统释放。

4、堆区(heap): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。

5、栈区(stack):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 *** 作方式类似于数据结构中的栈。

以上就是关于运行c程序的流程全部的内容,包括:运行c程序的流程、刚学C语言,请教下一下以下问题1.以下C程序运行流程是什么2.每个变量sign在程序的作用是什么、程序运行的基本步骤等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9277599.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存