C语言起源
1972年由丹尼斯·里奇 和 肯·汤普逊 在贝尔实验室 开发Unix操作系统时设计。
C语言是在B语言的基础上进行设计的。(B语言是由 汤普逊发明)
C语言设计的初衷:作为程序猿使用的一种编程工具。
C语言设计特性
C语言融合了 计算机科学理论 和时间的控制特性。它的设计理念让用户能轻松地完成 自顶向下的规划、结构化编程和模块化设计。故而由C语言编写的程序更容易懂、更可靠。
- 高效性:充分利用当前计算机的优势,C程序相对更紧凑,运行速度更快。
- 可移植性:意味着,在一种系统中编写的C程序稍作修改或者不修改就能在其他系统运行。C语言是可移植方面的佼佼者。从8位微处理器到克雷超级计算机,许多计算机体系结构都可以使用C编译器(C编译器:是把C代码转换成计算机内部指令的程序)。
- 强大而灵活:C程序课一用于解决物理学和工程学的问题,甚至可用于制作电影的动画效果。
- 面向程序猿:程序猿利用C可以访问硬件,操控内存中的位。C语言有丰富的运算符,能让程序猿简洁地表达自己的意图。
- 灵活性即是优点也是缺点:优点是,许多人物用C来处理都非常简洁(如,转换数据的格式);缺点,可能会犯一些比较麻烦的错误。
- 缺点:C语言使用指针,涉及指针的编程错误往往难以察觉。
C语言的应用范围
20世纪80年代,C语言就已经成为小型计算机(Unix系统)的主流语言。之后,C语言的应用范围扩展到微型机(个人计算机),大型机(庞然大物)。许多软件公司都用C语言开发文字处理程序、电子表格、编译器和其他产品,因为用C语言编写的程序紧凑而高效。更重要的是,C程序很容易修改,而且移植到新型号的计算机中也没什么问题。
20世纪90年代,软件公司开始使用C++开发大型编程项目。C++是在C的基础上嫁接了面向对象的编程工具(面向对象编程是一门哲学,他通过对语言建模来适应问题,而不是对问题建模来适应语言)。
C语言已成为嵌入式系统编程的流行语言。也就是越来越多的汽车、照相机、DVD播放机和其他现代化设备的微处理器都用C语言进行编程。
C语言作为开发操作系统的卓越语言,在Linux开发中扮演者极其重要的角色。
计算机能做什么
现代计算机由多种部件构成:
- 中央处理单元(CPU):承担绝大部分的运算工作。
- 随机存取内存(RAM):是存储程序和文件的工作区。
- 永久内存存储设备(ROM):过去一般只机械硬盘,现在还包括固态硬盘。即使在关闭计算机后,也不会丢失之前存储的程序和文件。
- 各种外围设备:(如,键盘、鼠标、触摸屏、监视器等)提供人与计算机之间的交互。
计算机的工作原理:
CPU的工作非常简单,他冲内存中获取并执行一条指令,然后在从内存中获取并执行下一条指令(一个吉赫兹的CPU一秒钟能重复这样的操作大约10亿次,因此CPU能以惊人的速度从事枯燥的工作)。
CPU有自己的小工作区----由若干个寄存器组成,每个寄存器都可以存储一个数字。一个寄存器存储下一条指令的内存地址,CPU使用该地址来获取和更新下一条指令。在获取指令后,CPU在另一个寄存器中存储该指令,并更新第一个寄存器存储下一条指令的地址。CPU能理解的指令有限(这些指令的集合叫作指令集)。而且这些指令相当具体,其中的许多指令都是用于请求计算机把一个数字从一个位置移动到另一个位置。例如从内存移动到寄存器。
- 储存在计算机中的所有内容都是数字。计算机以数字形式储存数字和字符。每个字符都有一个数字码。计算机载入寄存器的指令也已数字形式存储,指令集中的每条指令都有一个数字码。
- 计算机程序最终必须以数字指令码(即:机器语言)来表示。
语言标准
-
C99标准:1994年,ANSI/ISO联合委员会开始修订C标准,最终发布了C99标准。
-
此次标准定义的目标:1. 不是为了添加新特性,而是为了支持国际化编程。例如,提供多种方法处理国际字符集。2. 为适应可徐鹤工程项目中的关键数值计算,提高C的适应性。
-
C11标准:标准委员会在 2011 年发布了C11标准。
使用C语言的7个步骤
- 定义程序的目标:在动手写程序之前要明确自己想做什么,需要哪些信息,进行哪些计算和哪些控制,以及程序应该报告什么信息。
- 设计程序:此步骤主要考虑用户界面该是咋样的?如何组织程序?目标用户是谁?多久完成这个程序?
- 编写代码:将设计的程序翻译成C语言。(给自己的程序添加必要的注释)
- 编译源代码:编译器是吧源代码转换成可执行代码的程序,可执行代码是用计算机的机器语言表示的代码。C编译器负责把C代码翻译成特定的机器语言。此外C编译器还将源代码与C库的代码合并成最终的程序(更精确地说,应该是由一个被称为连接器的程序来链接库函数,但在大多数系统中,编译器运行链接器)。其结果是,生成一个用户可以运行的可执行文件,其中包含着计算机能理解的代码。编译器还会检查C语言程序是否有效。如果C编译器发现程序错误,就不生成可执行文件,并报错。
- 运行程序:上面生成的可执行文件也是可运行的程序。再常见环境(包括Windows命令符提示模式、Unix终端模式和Linux终端模式)中运行程序要输入可执行文件的文件名。
- 测试和调试程序:测试就是检查程序是否按照你说设计的思路运行,如若不是就说明程序有误,即有bug。查找并修复bug的过程叫调试。
- 维护和修改程序
编程机制
用C语言编写程序是,编写的内容被存储在文本文件中,改文件被称为源代码文件,以 .c 结尾。文件名由 . 前面的基本名(basename)和 . 后面的扩展名 (extension)组成。
目标代码文件、可执行文件 和 库
C编程的基本策略是,用程序吧源代码文件转换成可执行文件。C实现通过编译和链接两个步骤来完成这一过程。编译器把源代码转换成中间代码,链接器把中间代码和其他代码合并,生成可执行文件。另外链接器还将你编写的程序和预编译的库代码合并。
目标代码还缺少库函数,目标代码文件并不包含该函数的代码,他只包含了使用库函数的指令。
集成开发环境
- 调查
小结:
C是强大而简洁的编程语言。它能很好的控制硬件。而且,与大多数其他程序相比,C陈旭更容易从一个系统移植到另一个系统。
C是编译型语言。C编译器和链接器是把C语言源代码转换成可执行程序。
- 完美的可移植程序是,其源代码无需修改就能在不同计算机系统中成功编译的程序。
- 源代码文件包括程序员使用的任何编程语言编写的代码。
- 目标代码文件包含机器语言代码,他不必是完整的程序代码。
- 可执行文件包含组成可执行程序的完整机器语言代码。
- 编译就是编译器把源代码翻译成等价的机器语言代码(也叫做目标代码)
- 链接就是链接器吧编译器编译好的源代码以及库代码和启动代码组合起来,生成一个可执行程序。