C语言程序设计基础教程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 C语言的发展及特点

1.3.1 C语言的发展

C语言最早的原型是ALGOL 60,1963年,剑桥大学将其发展成为CPL(Combined Programming Language)。

1967年,剑桥大学的Martin Richards对CPL语言进行了简化,推出了BCPL(Basic Combined Programming Language)语言。

20世纪60年代,美国AT&T公司贝尔实验室(AT&T Bell Laboratory)的研究员Ken Thompson为PDP-7计算机开发了后来被命名为“UNIX”的操作系统。

1970年,Ken Thompson以BCPL语言为基础,设计出简单且接近硬件的B语言(取BCPL的首字母),并且用B语言编写了第1个UNIX操作系统。

1972年,贝尔实验室的Dennis M.Ritchie在B语言的基础上最终设计出了一种新的语言,取了BCPL的第2个字母作为这种语言的名字,这就是C语言。

1977年,Dennis M.Ritchie发表了不依赖于具体机器系统的C语言编译文本“可移植的C语言编译程序”。

1978年,Dennis M.Ritchie和Brian W.Kernighan合作推出了《The C Programming Language》的第1版(按照惯例,该著作简称为“K&R”)。书末的参考指南(Reference Manual)给出了当时C语言的完整定义,成为那时C语言事实上的标准,人们称之为“K&R C”。从这一年以后,C语言被移植到了多种机型上并得到了广泛支持,使其在当时的软件开发中几乎一统天下。

1983年,ASC X3(ANSI属下专门负责信息技术标准化的机构,现已改名为“INCITS”)成立了一个专门的技术委员会J11(J11是委员会编号,全称是“X3J11”),负责起草关于C语言的标准草案。

1989年,ANSI发布了第1个完整的C语言标准,即ANSI X3.159—1989,简称“C89”,不过人们也习惯称其为“ANSIC”。C89在1990年被国际标准组织ISO(International Organization for Standardization)一字不改地采纳,所以也有“C90”的说法。1999年,在做了一些必要的修正和完善后,ISO发布了新的C语言标准,命名为“ISO/IEC 9899:1999”,简称“C99”。

1999年,ANSI和ISO又通过了最新版本的C语言标准和技术勘误文档,该标准也被称为“C99”,这基本上是目前关于C语言的最新和最权威的定义了。

现在各种C编译器都提供了对C89和C90的完整支持,对C99只提供了部分支持,还有一部分提供了对某些K&R C风格的支持。

2011年12月8日,ISO正式发布了新的C语言的新标准C11,之前被称为“C1X”,官方名称为“ISO/IEC 9899∶2011”。

1.3.2 C语言的特点和优点

1.特点

(1)是一个有结构化程序设计、具有变量作用域(Variable Scope)及递归功能的过程式语言。

(2)传递参数均以值传递(Pass By Value),也可以传递指针(A Pointer Passed By Value)。

(3)不同的变量类型可以用结构体(Struct)组合在一起。

(4)只有32个保留字(Reserved Keywords),使变量、函数命名有更多弹性。

(5)部分变量类型可以转换,如整型和字符型变量。

(6)通过指针(Pointer)可以很容易地对存储器进行低级控制。

(7)预编译处理(Preprocessor)使C语言的编译更具弹性。

2.优点

(1)简洁紧凑、灵活方便。

C语言一共只有32个关键字和9种控制语句,程序书写形式自由,区分大小写,把高级语言的基本结构和语句与低级语言的实用性结合了起来。

(2)运算符丰富。

C语言的运算符包含的范围广泛,共有34种运算符。它把括号、赋值、强制类型转换等都作为运算符处理,从而使运算类型极其丰富,表达式类型多样化,灵活使用各种运算符可以实现在其他高级语言中难以实现的运算。

(3)数据类型丰富。

C语言的数据类型有整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等,能用来实现各种复杂的数据结构的运算,并引入了指针概念,使程序效率更高。

(4)表达方式灵活实用。

C语言提供多种运算符和表达式,对问题的表达可通过多种途径获得,其程序设计更主动、灵活。它对语法的限制不太严格,程序设计自由度大,如整型量与字符型数据及逻辑型数据可以通用等。

(5)允许直接访问物理地址,对硬件进行操作。

由于C语言允许直接访问物理地址,可以直接对硬件进行操作,因此既具有高级语言的功能,又具有低级语言的许多功能。它能够像汇编语言一样对位(bit)、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写系统软件。

(6)生成的目标代码质量高,程序执行效率高。

C语言描述问题比汇编语言简洁,工作量小、可读性好,易于调试、修改和移植。而代码质量与汇编语言相当,一般只比汇编程序生成的目标代码效率低10%~20%。

(7)可移植性好。

C语言在不同机器上的C编译程序的86%代码是公共的,所以C语言的编译程序便于移植。在一个环境中用C语言编写的程序不改动或稍加改动,即可移植到另一个完全不同的环境中运行。

(8)表达力强。

C语言有丰富的数据结构和运算符,包含多种数据结构,如整型、数组类型、指针类型和联合类型等,用来实现各种数据结构的运算。

C语言能直接访问硬件的物理地址,兼有高级语言和低级语言的许多优点。它既可用来编写系统软件,又可用来开发应用软件,已成为一种通用程序设计语言;另外C语言具有强大的图形功能,支持多种显示器和驱动器,并且计算功能和逻辑判断功能也很强大。