C简介

C 语言已成为最重要、最流行的编程语言之一。
C 是一种可移植性很高的语言。
C语言的特性:
1、设计特性
2、高效性
3、可移植性
4、强大而灵活
5、面向程序员
C 是编译型语言。
编译器是把源代码转换成可执行代码的程序。可执行代码是用计算机的机器语言表示的 代码。这种语言由数字码表示的指令组成。如前所述,不同的计算机使用不同的机器语言方案。C 编译器 负责把 C 代码翻译成特定的机器语言。
 
 
高级编程语言(如,C)以多种方式简化了编程工作。首先,不必用数字码表示指令;其次,使用的指 令更贴近你如何想这个问题,而不是类似计算机那样繁琐的步骤。使用高级编程语言,可以在更抽象的层 面表达你的想法,不用考虑 CPU 在完成任务时具体需要哪些步骤。例如,对于两数相加,可以这样写: total = mine + yours; 对我们而言,光看这行代码就知道要计算机做什么;而看用机器语言写成的等价指令(多条以数字码 形式表现的指令)则费劲得多。但是,对计算机而言却恰恰相反。在计算机看来,高级指令就是一堆无法 理解的无用数据。编译器在这里派上了用场。编译器是把高级语言程序翻译成计算机能理解的机器语言指 令集的程序。程序员进行高级思维活动,而编译器则负责处理冗长乏味的细节工作。
 
 
用 C 语言编写程序时,编写的内容被储存在文本文件中,该文件被称为源代码文件(source code file)。 大部分 C 系统,包括之前提到的,都要求文件名以.c 结尾(如,wordcount.c 和 budget.c)。在文件名 中,点号(.)前面的部分称为基本名(basename),点号后面的部分称为扩展名(extension)。因此,budget 是基本名,c 是扩展名。基本名与扩展名的组合(budget.c)就是文件名。文件名应该满足特定计算机操 作系统的特殊要求。例如,MS-DOS 是 IBM PC 及其兼容机的操作系统,比较老旧,它要求基本名不能超 过 8 个字符。因此,刚才提到的文件名 wordcount.c 就是无效的 DOS 文件名。有些 UNIX 系统限制整个 文件名(包括扩展名)不超过 14 个字符,而有些 UNIX 系统则允许使用更长的文件名,最多 255 个字符。 Linux、Windows 和 Macintosh OS 都允许使用长文件名。
 
目标代码文件、可执行文件和库 C 编程的基本策略是,用程序把源代码文件转换为可执行文件(其中包含可直接运行的机器语言代码)。 典型的 C 实现通过编译和链接两个步骤来完成这一过程。编译器把源代码转换成中间代码,链接器把中间 代码和其他代码合并,生成可执行文件。C 使用这种分而治之的方法方便对程序进行模块化,可以独立编 译单独的模块,稍后再用链接器合并已编译的模块。通过这种方式,如果只更改某个模块,不必因此重新 编译其他模块。另外,链接器还将你编写的程序和预编译的库代码合并。 中间文件有多种形式。我们在这里描述的是最普遍的一种形式,即把源代码转换为机器语言代码,并把结 果放在目标代码文件(或简称目标文件)中(这里假设源代码只有一个文件)。虽然目标文件中包含机器语言代 码,但是并不能直接运行该文件。因为目标文件中储存的是编译器翻译的源代码,这还不是一个完整的程序。 目标代码文件缺失启动代码(startup code)。启动代码充当着程序和操作系统之间的接口。例如,可以 在 MS Windows 或 Linux 系统下运行 IBM PC 兼容机。这两种情况所使用的硬件相同,所以目标代码相同,  但是 Windows 和 Linux 所需的启动代码不同,因为这些系统处理程序的方式不同。 目标代码还缺少库函数。几乎所有的 C 程序都要使用 C 标准库中的函数。例如,concrete.c 中就使 用了 printf()函数。目标代码文件并不包含该函数的代码,它只包含了使用 printf()函数的指令。 printf()函数真正的代码储存在另一个被称为库的文件中。库文件中有许多函数的目标代码。 链接器的作用是,把你编写的目标代码、系统的标准启动代码和库代码这 3 部分合并成一个文件,即 可执行文件。对于库代码,链接器只会把程序中要用到的库函数代码提取出来(见图 1.4)。 图 1.4 编译器和链接器 简而言之,目标文件和可执行文件都由机器语言指令组成的。然而,目标文件中只包含编译器为你编 写的代码翻译的机器语言代码,可执行文件中还包含你编写的程序中使用的库函数和启动代码的机器代码。 在有些系统中,必须分别运行编译程序和链接程序,而在另一些系统中,编译器会自动启动链接器, 用户只需给出编译命令即可。
 
 
 
posted @ 2019-01-16 20:22  Mcxfate  阅读(1000)  评论(0编辑  收藏  举报