打算跟着本书系统地学习一遍C语言,谨以此系列文章记录自己的学习之路。
1972年,美国贝尔实验室的丹尼斯·里奇(Dennis Ritch )和肯·汤普逊(Ken Thompson )在开发UNIX操作系统时设计了C语言,C语言是在B语言(汤普逊发明)的基础上进行设计。
想拥有自由就必须时刻保持警惕 ,要享受用C语言自由编程的乐趣,就必须承担更多的责任。
早在20世纪80年代,C语言就已经成为小型计算机(UNIX系统)使用的主流语言。从那以后,C语言的应用范围扩展到微型机(个人计算机)和大型机(庞然大物)。
特别是,C语言已成为嵌入式系统编程的流行语言。也就是说,越来越多的汽车、照相机、DVD播放机和其他现代化设备的微处理器都用C语言进行编程。
C++在C语言的基础上嫁接了面向对象编程工具(面向对象编程 是一门哲学,它通过对语言建模来适应问题,而不是对问题建模以适应语言)
现代的计算机由多种部件构成。中央处理单元 (CPU)承担绝大部分的运算工作。随机存取内存 (RAM)是存储程序和文件的工作区;而永久内存存储设备(过去一般指机械硬盘,现在还包括固态硬盘)即使在关闭计算机后,也不会丢失之前储存的程序和文件。
CPU的工作非常简单,至少从以下简短的描述中看是这样。它从内存中获取并执行一条指令,然后再从内存中获取并执行下一条指令。
CPU有自己的小工作区—— 由若干个寄存器 组成,每个寄存器都可以储存一个数字。一个寄存器储存下一条指令的内存地址,CPU使用该地址来获取和更新下一条指令。在获取指令后,CPU在另一个寄存器中储存该指令,并更新第1个寄存器储存下一条指令的地址。CPU能理解的指令有限(这些指令的集合叫作指令集 )。而且,这些指令相当具体,其中的许多指令都是用于请求计算机把一个数字从一个位置移动到另一个位置。例如,从内存移动到寄存器。
高级编程语言(如,C)以多种方式简化了编程工作。使用高级编程语言,可以在更抽象的层面表达你的想法,不用考虑CPU在完成任务时具体需要哪些步骤。
编译器是把高级语言程序翻译成计算机能理解的机器语言指令集的程序。
C89/C90/ANSI C
在该委员会制定的指导原则中,最有趣的可能是:保持C的精神。委员会在表述这一精神时列出了以下几点:
- 信任程序员;
- 不要妨碍程序员做需要做的事;
- 保持语言精练简单;
- 只提供一种方法执行一项操作;
- 让程序运行更快,即使不能保证其可移植性。
C99
C11
C是编译型语言。编写C程序的过程通常有7个步骤(也是比较通用的程序设计步骤)。
用C语言编写程序时,编写的内容被储存在文本文件中,该文件被称为源代码文件 (source code file )。大部分C系统,包括之前提到的,都要求文件名以.c结尾(如,wordcount.c
和budget.c
)。在文件名中,点号(.)前面的部分称为基本名 (basename ),点号后面的部分称为扩展名 (extension )。
链接器的作用是,把你编写的目标代码、系统的标准启动代码和库代码这3部分合并成一个文件,即可执行文件。
简而言之,目标文件和可执行文件都由机器语言指令组成的。然而,目标文件中只包含编译器为你编写的代码翻译的机器语言代码,可执行文件中还包含你编写的程序中使用的库函数和启动代码的机器代码。
C是强大而简洁的编程语言。它之所以流行,在于自身提供大量的实用编程工具,能很好地控制硬件。而且,与大多数其他程序相比,C程序更容易从一个系统移植到另一个系统。
C是编译型语言。C编译器和链接器是把C语言源代码转换成可执行代码的程序。
用C语言编程可能费力、困难,让你感到沮丧,但是它也可以激发你的兴趣,让你兴奋、满意。我们希望你在愉快的学习过程中爱上C。