C语言源程序到运行程序经过哪几个步骤

C语言源程序到运行程序经过哪几个步骤,第1张

1、预处理

在这一阶段,源码中的所有预处理语句得到处理,例如:#include语句所包含的文件内容替换掉语句本身,所有已定义的宏被展开。

根据#ifdef,#if等语句的条件是否成立取舍相应的部分,预处理之后源码中不再包含任何预处理语句。

GCC预处理阶段可以生成i的文件,通过选项-E可以使编译器在预处理结束时就停止编译。例如:gcc -E -o helloi helloc

2、编译

这一阶段,编译器对源码进行词法分析、语法分析、优化等 *** 作,最后生成汇编代码。这是整个过程中最重要的一步,因此也常把整个过程称为编译。

可以通过选项-S使GCC在进行完编译后停止,生成s的汇编程序。例如:gcc -S -o hellos helloc

3、汇编

这一阶段使用汇编器对汇编代码进行处理,生成机器语言代码,保存在后缀为o的目标文件中。

当程序由多个代码文件构成时,每个文件都要先完成汇编工作,生成o目标文件后,才能进入下一步的链接工作。

目标文件已经是最终程序的某一部分了,只是在链接之前还不能执行。可以通过-c选项生成目标文件:gcc -c -o helloo helloc

4、链接

经过汇编以后的机器代码还不能直接运行。为了使 *** 作系统能够正确加载可执行文件,文件中必须包含固定格式的信息头,还必须与系统提供的启动代码链接起来才能正常运行,这些工作都是由链接器来完成的。gcc -o hello helloc

5、运行:执行EXE文件,得到运行结果。

#include <stdioh>

#include <stringh>

int letter,number,blank,other;

void count(char str[])

{

int i;

for(i=0;str[i]!='\0';i++)

{

if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))

letter++;

else if(str[i]>='0'&&str[i]<='9')

number++;

else if(str[i]==' ')

blank++;

else

other++;

}

}

int main()

{

char a[80];

gets(a);

puts(a);

strcat(a,"\0");

letter=0;

number=0;

blank=0;

other=0;

count(a);

printf("\n%5d,%5d,%5d,%5d\n",letter,number,blank,other);

return 0;

}

扩展资料:

C语言需要说明的是:

1、一个C语言源程序可以由一个或多个源文件组成。

2、每个源文件可由一个或多个函数组成。

3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。

4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。

5、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。结构体、联合体、枚举型的声明的“}”后要加“ ;”。

6、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。

参考资料:

百度百科-c语言

粗略的角度来讲

A、B都是正确的,

因为,A:main()可以在库函数后面

可以在自定义函数的后面、

可以在自定义函数的前面

B: 的确,系统调用的库函数必须要在main()的前面

准确的来说:A、B都不是很正确,都存在描述性错误、

因为:

首先,main()的位置不是任意的,必须遵守C语言书写的一些基本规范

例如: int a=1;

printf("helle world");

main()

{

printf("%d",a);

}

这样的main()位置就不对

其次,系统调用的库函数必须写在程序的开头

例如:

#include “stdioh”

main()

{

printf("hello world!")

}

最后,main()的位置变化对程序的影响

例如, #include “stdioh”

int a=1;

printf("helle world");

main()

{int b=2;<br/> a=b;<br/> printf("%d",a);<br/> }

与下面的程序是不一样的程序

#include “stdioh”

main()

{int a=1;<br/> printf("helle world");<br/> printf("%d",a);<br/> }

在第一个例子中a=1,是一个全局变量

在第二个例子中,a=1是一个局部变量

导致最后两个程序输出的结果也不一样

回答结束

最后,你问的问题是不是有点简单,有点片面了,该好好学习啊

有空多交流啊

不对。

应该是C 任意位置,main是入口,不规定位置。main函数,又称主函数,是程序执行的起点,main是相对来说的。如同音学理论之主调于泛音,泛音即程序中的除main之外的其他函数,根据人们的思考方式而生成的而非必定的模式,有主有次,既可将程序模块化又实现了一个闭合的整体。

在C语言当中,一个程序,无论复杂或简单,总体上都是一个“函数”;这个函数就称为“main() 函数”,也就是“主函数”。

main函数在程序中大多数是必须存在的,但是依然有例外情况,比如windows编程中可以编写一个动态链接库dll模块,这是其他windows程序可以使用的代码。由于DLL模块不是独立的程序,因此不需要main函数。

以上就是关于C语言源程序到运行程序经过哪几个步骤全部的内容,包括:C语言源程序到运行程序经过哪几个步骤、编写一个函数,由实参传来一个字符串,统计此字符串中字母,数字,空格和其他字符的个数。、C语言规定:在一个源程序中,main()函数的位置在等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/9303097.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存