C语言概述

来源:互联网 发布:mac os 关闭当前窗口 编辑:程序博客网 时间:2024/05/29 10:32

整理自网络

这里写图片描述
C语言之父 Dennis Ritchie。

C语言是一门通用的计算机语言,广泛用于系统软件与应用软件的开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

名称来历

说起C语言名称的来历,可谓是颇为曲折。

在编程语言发展的早期, 有一种叫做 BCPL(Basic Combined Programming Language) 的高级语言,它是由1967年由剑桥大学的 Matin Richards 在CPL语言上改进而来。

BCPL本身并没有被使用太长时间,这是因为他的后代们实在太强大了。1970年,贝尔实验室的Ken Thompson在BCPL的基础上改进出了B语言,用于书写UNIX。这个名字取自BCPL中的第一个字母。B语言使用的时间更短,因为三年后的1973年同样是贝尔实验室的D.M.RITCHIE将B语言进一步改进,并且取了BCPL中的第二个字母将其命名为C语言。

而C语言和C++则在日后成为了最流行的高级语言。时至今日,很多操作系统还也采用C语言开发,比如目前流行的 LInux 操作系统。

发展历史

这里写图片描述

  • 1967年,剑桥大学的Martin Richards对CPL语言进行了简化,于是产生了BCPL(Basic Combined Programming Language)语言。

  • 20世纪60年代,美国AT&T公司贝尔实验室(AT&T Bell Laboratory)的研究员 Ken Thompson 闲来无事,手痒难耐,想玩一个他自己编的,模拟在太阳系航行的电子游戏——Space Travel。他背着老板,找到了台空闲的机器——PDP-7。但这台机器没有操作系统,而游戏必须使用操作系统的一些功能,于是他着手为 PDP-7 开发操作系统。后来,这个操作系统被命名为——UNIX。

  • 1970年,美国贝尔实验室的 Ken Thompson,以BCPL语言为基础,设计出很简单且很接近硬件的B语言(取BCPL的首字母)。并且他用B语言写了第一个 UNIX 操作系统。

  • 1971年,同样酷爱 Space Travel 的 Dennis M.Ritchie 为了能早点儿玩上游戏,加入了 Thompson 的开发项目,合作开发 UNIX。他的主要工作是改造 B 语言,使其更成熟。

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

  • 1973年初,C语言的主体完成。Thompson 和 Ritchie 迫不及待地开始用它完全重写了UNIX。此时,编程的乐趣使他们已经完全忘记了那个 “Space Travel”,一门心思地投入到了 UNIX 和 C 语言的开发中。随着 UNIX 的发展,C 语言自身也在不断地完善。直到今天,各种版本的 UNIX 内核和周边工具仍然使用C语言作为最主要的开发语言,其中还有不少继承 Thompson和Ritchie 之手的代码。

  • 1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。。

  • C语言继续发展,在1982年,很多有识之士和美国国家标准协会为了使这个语言健康地发展下去,决定成立C标准委员会,建立C语言的标准。委员会由硬件厂商,编译器及其他软件工具生产商,软件设计师,顾问,学术界人士,C语言作者和应用程序员组成。

C标准

这里写图片描述

K&R C
起初,C语言没有官方标准。1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。布莱恩·柯林汉(Brian Kernighan) 和 丹尼斯·里奇(Dennis Ritchie) 出版了一本书,名叫《The C Programming Language》。这本书被 C语言开发者们称为K&R,很多年来被当作 C语言的非正式的标准说明。人们称这个版本的 C语言为K&R C。它主要由以下特色:

  • 结构体(struct)类型
  • 长整数(long int)类型
  • 无符号整数(unsigned int)类型
  • 把运算符=+和=-改为+=和-=。因为=+和=-会使得编译器不知道使用者要处理i = -10还是i =- 10,使得处理上产生混淆。

即使在后来ANSI C标准被提出的许多年后,K&R C仍然是许多编译器的最 准要求,许多老旧的编译器仍然运行K&R C的标准。

ANSI C / C89标准

  • 1970到80年代,C语言被广泛应用,从大型主机到小型微机,也衍生了C语言的很多不同版本。

  • 1983年,美国国家标准协会(ANSI)成立了一个委员会X3J11,来制定 C语言标准。1989年,美国国家标准协会(ANSI)通过了C语言标准,因为这个标准是1989年通过的,所以一般简称 C89 标准。

  • 1990年,国际标准化组织(ISO)和国际电工委员会(IEC)把C89标准定为C语言的国际标准,又叫做 ISO C,因为此标准是在1990年发布的,所以有些人把简称作C90标准。不过大多数人依然称之为C89标准,因为此标准与 ANSI、C89标准完全等同(事实上,ANSI、ISO、C89、C90完全等同)。

  • 1994年,国际标准化组织(ISO)和国际电工委员会(IEC)发布了C89标准修订版,简称 C94 标准。

  • 1995年,国际标准化组织(ISO)和国际电工委员会(IEC)再次发布了C89标准修订版,简称 C95 标准。

  • 1999年1月,国际标准化组织(ISO)和国际电工委员会(IEC)发布了C语言的新标准,简称 C99 标准,这是C语言第二个官方标准。

  • 2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)再次发布了C语言的新标准,简称 C11 标准,原名C1X。这是C语言的第三个官方标准,也是C语言的最新标准。

特点

  • 高级语言:它是把高级语言的基本结构和语句与低级语言的实用性结合起来的工作单元。

  • 结构式语言:结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

  • 代码级别的跨平台:由于标准的存在,使得几乎同样的C代码可用于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。C语言对编写需要进行硬件操作的场合,优于其它高级语言。

  • 使用指针:可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。

优缺点

优点

  • 简洁紧凑、灵活方便:
    C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。

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

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

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

  • 表达力强
    C语言有丰富的数据结构和运算符。包含了各种数据结构,如整型、数组类型、指针类型和联合类型等,用来实现各种数据结构的运算。C语言的运算符有34种,范围很宽,灵活使用各种运算符可以实现难度极大的运算。

缺点:

  • C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。

  • C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。也就是说,对用C语言的人,要求对程序设计更熟练一些。

参考资料

  • 百度词条
  • C语言发展史
  • 美国国家标准协会

【作者:果冻 http://blog.csdn.net/jelly_9】

原创粉丝点击