1.1 C语言概述

C语言具有绘图能力强、可移植性等特点,并且具备很强的数据处理能力,因此适用于编写系统软件,三维、二维图形和动画。它是数值计算的高级语言,能适用于不同的软件和硬件平台,深受开发人员的喜爱。而C语言在诞生之后经历了多个发展阶段,逐步成为成熟的设计语言。本节将对C语言的发展历史、特点以及应用进行详细介绍。

1.1.1 C语言的起源

C语言的发展历史,如表1-1所示。

表1-1 C语言发展史

1.1.2 C语言的特点

C语言作为一种通用的计算机编程语言,兼有高级语言和低级语言的功能,C语言的特点表现在以下几个方面。

1.简洁紧凑、灵活方便

C语言是现有程序设计语言中规模最小的语言之一,而小的语言体系往往能设计出较好的程序。C语言的关键字很少,ANSI C标准一共只有32个关键字,9种控制语句,压缩了一切不必要的成分。C语言的书写形式比较自由,表达方法简洁,使用一些简单的方法就可以构造出相当复杂的数据类型和程序结构。

2.可移植性好

C语言是通过编译来得到可执行代码的,统计资料表明,不同机器上的C语言编译程序80%的代码是公共的,C语言的编译程序便于移植,在一个环境上用C语言编写的程序,不改动或稍加改动,就可移植到另一个完全不同的环境中运行。这大大增强了产品开发的能力。

3.表达力强

C语言具有丰富的数据结构类型,可以根据需要采用整型、实型、字符型、数组类型、指针类型、结构类型、联合类型、枚举类型等多种数据类型来实现各种复杂数据结构的运算。C语言还具有多种运算符,灵活使用各种运算符可以实现其他高级语言难以实现的运算。

4.表达方式灵活实用

利用C语言提供的多种运算符,可以组成各种表达式,还可采用多种方法来获得表达式的值,从而使用户在程序设计中具有更大的灵活性。C语言的语法规则不太严格,程序设计的自由度比较大,程序的书写格式自由灵活。程序主要用小写字母来编写,而小写字母是比较容易阅读的,这些充分体现了C语言灵活、方便和实用的特点。

5.可进行结构化程序设计

C语言是以函数作为程序设计的基本单位的,C语言程序中的函数相当于汇编语言中的子程序。C语言对于输入和输出的处理也是通过函数调用来实现的。各种C语言编译器都会提供一个函数库,其中包含许多标准函数,如各种数学函数、标准输入输出函数等。此外C语言还具有自定义函数的功能,用户可以根据自己的需要编制满足某种特殊需要的自定义函数。实际上C语言程序就是由许多个函数组成的,一个函数即相当于一个程序模块,因此C语言可以很容易地进行结构化程序设计。

6.可以直接操作计算机硬件

C语言具有直接访问单片机物理地址的能力,可以直接访问片内或片外存储器,还可以进行各种位操作。

7.生成的目标代码质量高

众所周知,汇编语言程序目标代码的效率是最高的,这就是为什么汇编语言仍是编写计算机系统软件的重要工具的原因。但是统计表明,对于同一个问题,用C语言编写的程序生成代码的效率仅比用汇编语言编写的程序低10%~20%。尽管C语言具有很多的优点,但和其他任何一种程序设计语言一样也有其自身的缺点,如不能自动检查数组的边界,各种运算符的优先级别太多,某些运算符具有多种用途等。但总的来说,C语言的优点远远超过了它的缺点。经验表明,程序设计人员一旦学会使用C语言之后,就会对它爱不释手,尤其是单片机应用系统的程序设计人员更是如此。

8.运算符丰富

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

9.数据类型丰富

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

10.语言的一些缺点

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

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

(3)C语言的简洁性与其丰富的运算符相结合,使其可能会编写出极难理解的代码。

(4)C语言表达方面的自由会增加风险,尤其是C语言对指针的使用。

1.1.3 C语言的应用领域

20世纪80年代初,C语言在UNIX系统的小型机世界中就已经是主导语言了。从那时开始,它已经扩展到个人计算机和大型机。许多软件开发商都首选C语言来开发其子处理程序、电子表格软件、编译器和其他产品。这些公司知道,C语言可以产生紧凑而高效的程序。更重要的是,他们知道这些程序易于修改而且易于适应新的计算机模式。

C语言的主要应用领域如下:

(1)UNIX/Linux操作系统。

(2)嵌入式。

(3)计算机语言。

(4)机器人。

(5)工控领域。

(6)Lucas电影。

(7)计算机游戏。

(8)PC应用程序。

不管C++和Java这样较新的语言如何流行,C语言在软件产业中仍然是一种重要的技能。在最想获得的技能中,它一般都列在前10名。特别是在嵌入式系统的编程中,C语言已成为最根本的开发工具。也就是说,C语言将用来为汽车、照相机、蓝光播放机、xbox360等游戏机和其他现代化设备中逐渐普及的微处理器编程。由于C语言是一种适合用来开发操作系统的语言,在Linux的系统开发中也扮演这重要的角色。因此,未来C语言将仍保持强劲的势头。