① c语言执行过程生成的三种文件和扩展名
用C语言编写的程序成为C语言源程序,源程序文件的扩展名为“.c”。
源程序经编译生成目标文件(".obj")。
把目标文件与各种库函数连接起来,生成可执行文件(“.exe”).
C语言程序可以使用在任意架构的处理器上,只要那种架构的处理器具有对应的C语言编译器和库,然后将C源代码编译、连接成目标二进制文件之后即可运行。
(1)关于可执行文件说法正确c语言扩展阅读:
C语言是面向过程的编程语言,用户只需要关注所被解决问题的本身,而不需要花费过多的精力去了解相关硬件,且针对不同的硬件环境,在用C语言实现相同功能时的代码基本一致,不需或仅需进行少量改动便可完成移植。
这就意味着,对于一台计算机编写的C程序可以在另一台计算机上轻松地运行,从而极大的减少了程序移植的工作强度。
C语言既有高级语言的特点,又具有汇编语言的特点;既是一个成功的系统设计语言,又是一个实用的程序设计语言;既能用来编写不依赖计算机硬件的应用程序,又能用来编写各种系统程序;是一种受欢迎、应用广泛的程序设计语言。
② c语言源程序文件,目标文件,和可执行文件的扩展名是什么
根据平台不同,扩展名也有所不同:
1、源程序。
在各个平台上,C语言的源程序扩展名都是相同的,即c。 比如test.c等。
C++的源程序则是cpp。
2、目标文件。
目标文件是源程序经过编译生成的文件,平台不同,编译工具不同生成的目标文件扩展名也不同。 在windows上比较常见的为obj, 在Linux下比较常见的为o。另外还有一些比较少见的扩展名,如oo, tco等。
3、可执行文件。
可执行文件是目标文件经过链接后,产生的用于运行的文件。
在windows下可执行文件扩展名为exe。
在Linux下可执行文件没有固定的扩展名,在编译时默认为out,但实际上可以是任意扩展名甚至没有扩展名,只要有执行权限即可。
③ c语言中的源程序必须经过编译连接生成可执行程序才能运行,这句话是对不对
哥们,这么理解是对的,不过感觉有点表面。
建议看看计算机一些原理,像你说的这个问题我会想到,计算机最终只能识别二进制码,
所以其实不管我们一切啥语言,最终都是通过编译器编译成二进制码,计算机才能识别
而去运行,而c语言编写的程序,肯定是要经过一系列的编译,链接,生成可执行的文件。
在windows系统中,执行文件都是.exe为扩展名的。不过在linux系统中就不一样了,linux
系统并不区分扩展名,所以也就无所谓什么.exe之类的文件,只要知道最终生成可执行的
二进制文件就可以了。
④ c语言可执行程序文件是通过()和()生成的
源程序文件不是可执行文件。 C源程序文件是一种文本文件,它首先需要编译器去编译成目标文件,在通过链接器链接库代码才能形成可执行的二进制exe文件。每一个C语言程序必须要经过编译和链接才能被计算机执行,编译是将C源码翻译成机器码,链接是将将二进制目标文件装配成一个具有特定格式的二进制可执行文件,比如Windows平台上是PE格式,一般以.exe为扩展名。 一个C语言程序从源码到计算机系统可以执行,更细致的划分为:预处理——编译——汇编——链接。预处理是对C语言源码进行文本处理,编译阶断是将C源码经C编译器生成汇编代码,汇编阶断是将汇编代码经汇编器生成二进制机器码文件。这两个合拢起来,笼统的可以叫做编译阶断。语言是一门计算机语言,有自己一定的语法。但是,C语言并不能直接被对象所理解,需要将C语言转变成可执行代码,即二进制代码。在C语言转变成二进制可执行代码时,是以工程为单位的。而一个工程中往往会包含多个C文件。因此,需要将每个C文件都编译成二进制代码。此时,每个C文件所对应的二进制代码是独立的。由于工程是一个系统,所以需要将所有的C文件二进制代码链接到一起,形成一个工程的可执行文件。 综上,编译和链接就是指的将C文件转变成二进制代码,并将各个独立的C文件二进制代码链接到一起,形成一个可执行文件的过程。
⑤ 在c语言中“可执行程序”是什么意思
编写的代码经过编译和连接转为可执行文件的过程。
对于可执行文件中的函数调用,可分别采用动态链接或静态链接的方法。使用动态链接能够使最终的可执行文件比较短小,并且当共享对象被多个进程使用时能节约一些内存,因为在内存中只需要保存一份此共享对象的代码。
但并不是使用动态链接就一定比使用静态链接要优越。在某些情况下动态链接可能带来一些性能上损害。
源代码-->预处理-->编译-->优化-->汇编-->链接-->可执行文件
(5)关于可执行文件说法正确c语言扩展阅读:
(1)静态链接在这种链接方式下,函数的代码将从其所在地静态链接库中被拷贝到最终的可执行程序中。这样该程序在被执行时这些代码将被装入到该进程的虚拟地址空间中。
静态链接库实际上是一个目标文件的集合,其中的每个文件含有库中的一个或者一组相关函数的代码。(个人备注:静态链接将链接库的代码复制到可执行程序中,使得可执行程序体积变大)
(2)动态链接在此种方式下,函数的代码被放到称作是动态链接库或共享对象的某个目标文件中。链接程序此时所作的只是在最终的可执行程序中记录下共享对象的名字以及其它少量的登记信息。
在此可执行文件被执行时,动态链接库的全部内容将被映射到运行时相应进程的虚地址空间。动态链接程序将根据可执行程序中记录的信息找到相应的函数代码。
(个人备注:动态链接指的是需要链接的代码放到一个共享对象中,共享对象映射到进程虚地址空间,链接程序记录可执行程序将来需要用的代码信息,根据这些信息迅速定位相应的代码片段。)
⑥ C语言的可执行程序是由一系列机器指令构成的
第一课C语言程序设计基础
本课主要知识点:
1.知识点:C程序基础
l C语言是一种结构化程序设计语言。三种基本结构:顺序、选择、循环。
例1:(2010-09-11)以下关于结构化程序设计的叙述中正确的是(C)
A)一个结构化程序必须同时由顺序、分支、循环三种结构组成
B) 结构化程序使用goto语句会很便捷
C) 在C语言中,程序的模块化是利用函数实现的
D)由三种基本结构构成的程序只能解决小规模的问题
例2:(2011-03-26)计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是(A)
A)C语言程序仅可以编译执行
B)C语言程序仅可以解释执行
C)C语言程序既可以编译执行又可以解释执行
D)以上说法都不对
【解析】计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。翻译的方式有两种,一个是编译,一个是解释。C语言程序仅可以编译。
例3:(2011-03-26)以下叙述中错误的是( D)
A)C语言的可执行程序是由一系列机器指令构成的
B)用C语言编写的源程序不能直接在计算机上运行
C)通过编译得到的二进制目标程序需要连接才可以运行
D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件
【解析】C程序开发过程:编辑—>(.c)编译—>(.obj)链接—>可执行文件(.exe)
2.知识点:C语言程序的构成
l C程序是由函数构成的,一个C程序有且仅有一个main函数。一个函数由两部分组成:函数的首部和函数体。函数体包括声明部分和执行部分。一个C程序总是从main函数开始执行(即程序的入口),由main函数结束,(即程序的出口)。
例1:(2010-03-12)以下叙述正确的是(B)
A)C语言程序是由过程和函数组成的
B) C语言函数可以嵌套调用,例如:fun(fun(x))
C) C语言函数不可以单独编译
D)C语言中除了main函数,其他函数不可作为单独文件形式存在
例2:(2011-09-11)以下叙述中错误的是 (C)
A.C语言编写的函数源程序,其文件名后缀可以是C
B.C语言编写的函数都可以作为一个独立的源程序文件
C.C语言编写的每个函数都可以进行独立的编译并执行
D.一个C语言程序只能有一个主函数
3.知识点:标识符
l 命名规则:
①标识符中只能包含字母(a-z,A-Z),数字(0-9),下划线(_)。
②第一个字符必须是字母或下划线。
分类
③用户自定义的标识符 ⅰ格式合法,ⅱ不能使用关键字,ⅲ见名知意
例1:(2010-03-13)以下C语言用户标识符中,不合法的是(D)
A)_1 B)AaBc C)a_b D)a-b
4.知识点:数据类型
例1:(2010-03-16)以下关于C语言数据类型使用的叙述中错误的是(D)
A)若要准确无误差的表示自然数,应使用整数类型
B)若要保存带有多位小数的数据,应使用双精度类型
C)若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型
D)若只处理“真”和“假”两种逻辑值,应使用逻辑类型
【解析】结构数据类型是根据已定义的一个或多个数据类型用构造的方法来定义的,一个结构类型的值可以分解成若干个“成员”或“元素”,每个“成员”都是一个基本数据类型或又是一个构造类型,C项正确。C语言没有逻辑类型,故D项错误