首页 理论教育简明实用的C语言概述

简明实用的C语言概述

【摘要】:1972—1973 年,贝尔实验室的D.M.Ritchie 在B 语言基础上设计出了C 语言。1973 年,Ken Thompson 和D.M.Ritchie合作把UNIX 的90%以上用C 语言改写,即UNIX 第5 版。直到1975 年UNIX第6 版公布后,C 语言的突出优点才引起人们的注意。可以说,C 语言与UNIX 是一对孪生兄弟,在发展中相辅相成。1987 年ANSI 又公布了C 语言新标准——87ANSI C。1990 年,国际标准化组织ISO 接受了87 ANSI C 为C 语言的国际标准。C 语言共有44 种运算符。

1.C 语言的发展

在C 语言诞生以前,系统软件主要是用汇编语言编写的。由于汇编语言程序依赖于计算机硬件,其可读性和可移植性都很差;但一般的高级语言又难以实现对计算机硬件的直接操作,于是人们盼望有一种兼有汇编语言和高级语言特性的新语言——C 语言。

C 语言是在B 语言的基础上发展起来的,它的根源可以追溯到1960 年出现的ALGOL 60。ALGOL 60 是一种面向问题的高级语言,但离硬件比较远,不宜用来编写系统软件。1963 年英国剑桥大学推出了CPL 语言,它是在ALGOL 60 的基础上发展起来的,更接近硬件,但规模较大,难以实现。1967 年,英国剑桥大学的Martin Richards 对CPL 做了简化,推出了BCPL语言。1970 年,美国贝尔实验室的Ken Thompson 以BCPL 为基础,设计出了简单而且很接近硬件的B 语言,并用B 语言编写了第一个UNIX 操作系统,在PDP-7 上实现。1971 年在PDP-11/20 上实现了B 语言,并编写了UNIX 操作系统。但B 语言过于简单,功能有限。1972—1973 年,贝尔实验室的D.M.Ritchie 在B 语言基础上设计出了C 语言。C 语言既保持了BCPL 和B 语言的优点,又克服了它们的缺点。1973 年,Ken Thompson 和

D.M.Ritchie合作把UNIX 的90%以上用C 语言改写,即UNIX 第5 版。

虽然对C 语言进行了多次改进,但主要还是在贝尔实验室内部使用。直到1975 年UNIX第6 版公布后,C 语言的突出优点才引起人们的注意。1977 年出现了不依赖于机器的C 语言编译文本“可移植C 语言编译程序”,使C 语言移植到其他机器时所需做的工作大大简化,这也推动了UNIX 操作系统迅速在各种机器上的实现。可以说,C 语言与UNIX 是一对孪生兄弟,在发展中相辅相成。1978 年以后,C 语言已先后移植到大、中、小、微型机上,已独立于UNIX和PDP 了。

1983 年,美国国家标准化协会(ANSI)根据C 语言问世以来各种版本对C 语言的发展和扩充,制定了新的标准,称为ANSI C。1987 年ANSI 又公布了C 语言新标准——87ANSI C。1990 年,国际标准化组织ISO 接受了87 ANSI C 为C 语言的国际标准。目前流行的C 编译系统都是以ANSI C 为基础的。

目前流行的C 语言的编译器有Microsoft C/C++、Borland C/C++、Visual C++2010、 Win-TC、Turbo C/C++for Windows 集成实验与学习环境等,各种版本基本部分是相同的,但略有差异,因此应了解所用计算机系统配置的C 编译系统的特点和规定。

2.C 语言的特点

C 语言之所以能存在和发展,并具有生命力,在于它有不同于其他语言的特点。C 语言的主要特点如下:(www.chuimin.cn)

(1)简洁、紧凑。C 语言一共只有32 个关键字、9 种控制语句。

(2)运算符丰富。C 语言共有44 种运算符。它把括号、赋值、强制类型转换等都作为运算符处理,从而使C 语言的运算类型极其丰富,表达式多样化。

(3)具有丰富的数据类型。C 语言具有整型、实型、字符型、数组类型、指针类型、结构体类型、共同体类型等,能方便地构造更加复杂的数据结构(如链表、树、栈等)。

(4)是一种结构化的程序设计语言。C 语言具有结构化的控制语句(如if、switch、for、while、do…while)。用函数作为程序的模块单位,便于实现程序的模块化

(5)语法限制不严格,程序设计灵活。例如,C 语言不检查数组下标越界,C 语言不限制对各种数据转化(编译系统可能对不合适的转化进行警告,但不限制),不限制指针的使用,程序正确性由程序员保证。灵活和安全是矛盾的,对语法限制的不严格可能也是C 语言的一个缺点,黑客可能使用越界的数组攻击用户的计算机系统。

(6)能进行位操作,可以直接对部分硬件进行操作。例如,C 语言可以直接操作计算机硬件,如寄存器、各种外设I/O 端口等;C 语言的指针可以直接访问内存物理地址;C 语言类似汇编语言的位操作可以方便地检查系统硬件的状态。

(7)可移植性好。用C 语言编写的程序基本上不需要修改或只需要少量修改就可移植到其他的计算机系统或操作系统中。

(8)C 语言编译后生成的目标代码小,质量高,程序的执行效率高。有资料显示其效率只比汇编语言代码的效率低15%左右。