c语言基础教程 第一章 c语言概述.doc
《c语言基础教程 第一章 c语言概述.doc》由会员分享,可在线阅读,更多相关《c语言基础教程 第一章 c语言概述.doc(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C语言第一章 c语言概述C语言基础教程 1.1. c语言的由来与发展1.1.1. c语言的由来 c语言诞生干19?2年,由美国电话电报公司(AT&T)贝尔实验室的D. M. Ritchie设计, 并首先在一台使用UNIX操作系统的DEC PDP-11计算机上实现。 C语言是在一种称为B语言的基础上,克服了B语言依赖于机器又无数据类型等局限性开发的语言。在1970年,美国贝尔实验室的IC. Thompson以BCPL语言为基础,设计出一种既简单又接近于硬件的B语言,并用它写成了第一个UNIX操作系统,在PDP-7计算机上实现的。B语言是取了BCPL语言的第一个字母。而BCPL语言(Basic C
2、ombined ProgrammingLanguage)是3.967年英国剑桥大学的M. Richard,基于一种CPL语言(combined Program-wing Language)提出的一种改进的语言。而CPL语言又是于1963年英国剑桥大学根据AL-GOL 8。推出的一种接近硬件的语言。由此可见,G语言的根源可以追溯到ALGOL 60,它的演变过程如下所示: ALGOL6o(1960年)与CPL(1963年)一BCPL(1967年)iBC(1972年1. 1. 2 C语言的发展 C语言是在人们设想寻找一种既具有一般高级语言的特征,又具有低级语言特点的语言 的情况下应运而生的,它具有人
3、们的这种期望,集中了高级语言和低级语言的优点。最初的C语言就是为了描述和实现UNIX操作系统而产生的一种工具语言。1973年,贝尔实验室的KThampson和D. M. Richie两人合作使用C语言修改了UNIX操作系统,即uNZx第5版本。原来的UNIX操作系统是用汇编语言写的,改写后UNIX操作系统中90%以上使用了C语言。从此,C语言的命运与UNIX操作系统便有着密切的联系,随着UNIX操作系统的发展和推广,C语言也在被广泛的使用和发展。 C语言出世以后。在应用中不断的改进。在1975年UN1X第6版本公布以后,C语言开始引起人们的注意,它的优点逐步被人们所认识。1977年出现了与具体
4、机器无关的C语言编译文本,推动了UNIX操作系统在各种机器上的迅速地实现。随着UNIX的日益广泛的使用,C语言也得到了迅速的推广。1978年以后,C语言先后被移植到大、中、小和微型机上,它很快成为世界上应用最广泛的计算机语言之一。 1978年又推出UNIX第8版本,以该版本中的C编译程序为基础,B. W. Ketnigha。和D. M. Ritchie合作(被称为K&R)出版The C Programming Language(C程序设计语言)一书,被称为标准C 1983年,ANSI(美国国家标准化协会)对G语言的各种版本进行了扩充,推出了新的标准,被称为ANSI . 它比原来的标准C有了改进
5、和扩充。1987年,ANSI又公布了87ANSZC新版本。目前流行的各种c语言编译系统的版本大多数都以此为基础,但各有其不同。当前微机上使用的C语言编译系统多为Microsoft C, Turbo C, Borland C和QuickC等,它们略有差异,按标准C书写的程序,基本上都可运行。读者要了解不同版本的编译系统的特点和区别可参阅有关的操作说明书。1.2.1 C语言的特点 c语言是一种开发比较晚的高级语言,它吸取了早期高级语言的优点,克服了某些不足, 形成了它独有的特性。c语言的特点概括起来有如下几点:1.C语言是一种结构化的程序设计语言 结构化程序设计的优点是便于分工合作,便于调试、维护
6、和扩充。这种程序设计方法是将一个大程序分成若千个模块,每个模块完成一个功能,由一个总控模块来控制和协调各个模块来实现总的功能;因此,这种程序设计方法又称为模块化程序设计方法。在C语言中,函数是构成C谙言程序的最小模块。实际上,C语言的程序是由一个或者多个文件组成的,每个文件叉是由一个或多个函数组成的。因此,一个程序是由一个或多个函数组成的,其中,须有且仅有一个主函数,生函数的名字规定为rnain() o这样,组成一个程序的者干个文件中,仅有一个是主文件,只有主艾件中才含有main ( )函数。另外,函数是由若干条语句组成的,语句是由若干个单词组成的单词是由若干个字符组成的。字符是构成程序的最小
7、单元。e语言程序的构成如下所示: 程序文件函数语句单词、字符。 C语言是结构化程序设计语言,它具有构成三种基本结构模式的语句,这种结构化程序设计应具有的三种基本结构模式如下: 顺序结构棋式 它将由若干条顺序执行的语句构成,这是程序设计的最基本形式。 分支结构模式 C语言中具有条件语句和开关语句,它将会构成各种需要的分支结构模式。 .循环结构模式 C语言中提供了三种循环语句(for循环,whil。循环和do-while循环),用它们可以构成 各种循环结构模式。 在讲述C语言是一种结构化程序设计语言的同时,还必须指出它与其他结构化程序设计语言(如PASCAL语言)相比较,还有一些不完全之处,因此,
8、C语言是一种不完全的结构化程序设计语言。其表现如下: 第一,完全的结构化程序设计语言不允许使用goto语句,因为goto语句会破坏结构化。 但是。got。语句在某些时候会使得程序简练,因此,在C语言中原则上允许使用goto语句,为了减少它对结构化的影响,采取了限制使用的办法,即规定got。语句的转向范围只能在一个函数体内。不得使用gates语句从一个函数体内转向到另一个函数体中,这种限制性地使用goto语句会给编程带来一些方便,又不会影响棋块之间的结构化。但是,建议在G语言的程序中尽量少使用goto语句。 第二,完全的结构化程序设计语言要求一个模块只有一个入口和一个出口,这样便于结构化的管理。
9、但是,C语言程序中允许函数使用多个返回语句(return语句),即允许函数有多个出口,返回到调用函数。这样做也是为了编程中的方便。在C语言程序中,可以使用条件语句来返回不同的函数值。 由此可见,C语言虽然是一个不够严格的结构化程序设计语言,但它是一个使用起来十分灵活的高级语言。2.C语言十分简练 C语言是一种非常简练的语言。用C语言编写的程序十分简洁。C语言的简洁性表现如下: (1) C语言中类型说明符采用缩写形式,例如,整型可用int,而不用integer;字符型用 char而不用character;长整型可用long等等。 (2) C语言中关键字较少,只有32个。有些关键字用简单的符号代替
10、,例如,条件语句中的ef体的定界符采用花括号(),如果是一条语句规定不用定界符。又例如,循环语句中循环体也是如此。 (3)运算符丰富。不仅数量多,而且功能强,例如,三目运算符(?:)具有条件语句的功能。 三目运算符使用方法如下: dl? d2:d3 其中,dl,d2,d3是不同的表达式。其功能是先计算表达式dl的值,如果dl的值是非零, 则上述三目运算符组成的条件表达式的值为d2表达式的值;否则(即dl表达式的值为零)条 件表达式的值为d3的值。因此,它将相当如下表示的if语句; If (dl) C=d2 else C=d3 其中,c用来存放上述条件表达式的值。 使用功能强的运算符可以使得程序
11、简洁。 (4)预处理功能将简化程序书写内容。C语言中提供r一种预处理功能,它包含宏定义和 文件包含等,其中宏定义有一种简化书写的功能,它可将一个复杂的格式用一个简单格式来定义,例如 #define PI 3. 表示定义PI为3. ,在程序中只需用PI表示,在编译前系统将用3. 来替代PI。这里,简化是一个特点,还有其他好处后面会介绍。还有文件包含也将起到简化书写的目的,它将许多文件都将使用的一些语句放在某个指定的文件(一般用头文件,即。h文件)中,那么在某个文件中需要这些语句时,不必重写,只要将原来写好的指定文件包含进来就可以了,其方法十分简单,例如 # include myfile.h 其中
12、,myfile.h是事先写好的需要包含其内容的文件。3.C语言功能很强 C语言的功能性强表现在它既具有高级语言的功能又具有低级语言的功能。数值运算和 非数值运算的功能C语言都具有,并且在处理非数值数据时更加方便和灵活。此外,C语言还具备一些低级语言的功能,例如,寄存器运算功能,二进制位运算功能和内存地址运算功能等。这些低级语言的功能是一般高级语言所没有的。由于c语言具有上述这些功能,因此,它的应用十分广泛,它不仅像其他高级语言一样编写一些应用程序,而且还可以像汇编语言一样编写一些系统程序。而在实际上,许多系统软件,例如关系数据库管理系统,绘图软件系统等,都是用c语言编写的。另外,使用c语言编写
13、一些接口程序也十分方便。 c语言还提供了丰富的数据类型,除了基本的数据类型之外,还提供了构造的数据类型, 例如,数组、结构、联合和枚举。使用这些数据类型可以很方便地实现各种复杂的数据结构(例 如,链表、栈、树等)的操作。 4. C语言的可移植性好 高级语言的可移植性都比汇编语言好,在诸多的高级语言中,c语言的移植性更为突出。 这是因为该清育编译系统较小,。另外顶处理功能对移植也带来一些方便,因此,c语言本身只需稍加修改便可用于各种型号的机器上和各类操作系统中,用c语言编写的程序也很方便地用于不同系统中,这也是c语言得川广泛应用的原因之一 在了解和掌握c语言上述的特点的同时,还应该知道c语言所存
14、在的不足,这些不足往 往是由于突出某个特点而带来的。在学习c语言中,了解这些不足是很重要的,它可以避免出现一些莫明其妙的错误。下面列举四个方面的不足。 (1)运算符多,难用难记。c语言中有o多个运算符,又分S种优先级和两类结合性,这无疑对数据的运算和处理带来了方便。但是,诸多的运算符和不同的优先级势必会带来难记忆,难使用的不足。例如,有些功能不同的运算符,却使用相同的符号,如“,”,它作为单目运算符表示取内容,它作为双目运算符表示两个操作数相乘,它与斜线符“/片连在一起(/,或,/) 表示注释符,另外,它用在说明语句中,用来表示它右边变量为指针等等。还有运算符的15种优先级不要记混了,否则会造
15、成计算值的错误。 (2) C语言中类型转换比较灵活,例如,int型与char型可以自动转换。这些自动转换的规定带来一定的计算方便,在C语言中允许一个字符与一个整数进行加减运算,例如 a+2 是合法的,该表达式的值用字符型表示为c,用整型数表示为99。为了转换上的方便,在许多情况下将不作类型检查,例如,在只作简单说明时的函数调用中,要求形参和实参类型一致,如果类型不一致也不判错仍可通过,有时会造成运算结果的错误,为了避免这类错误的发生,可以对函数进行原型说明,这时编译时将会对形参和实参的类型进行检查,增加其安全性。另外,也可使用强制类型运算符来限制其不必要的自动转换。 (3) C.语言中数组在动
16、态赋值时不作越界检查。因此,在数组元素的个数少于实际斌值的项数时,编译系统不报越界错,而继续按数组元素所表示的地址进行赎值,这样容易造成数据的混乱。为了避免这种情况的发生,应尽量避免动态的越界赋值。对数组的静态赋值(即赋初值)不会发生越界赋值的现象,静态时出现越界赋值将报错。 (4) C语言为了优化等原因允许不同的编译系统在表达式或参数表内重新安排求值顺序。这样对于一般的表达式值和参数表内各项参数值是没有影响的,例如,改变表达式中各操作数的计算顺序不会改变表达式的值。但是,对一些具有副作用的运算符=y, m,n,4B等。 读者要学会写出合法的标识符,也要能识别出非法的标识符。 在给变量、函数等
17、起名字时最好能做到“见名知意”,即从标识符的字符集中可知道该变量或函数的含意。例如,year , month , day , nartxe , age , sex等,不难从英文单词中了解变量的含意。2.关健字 关键字是一种具有特定含意的标识符。关键字又称保留字。因为这些标识符是系统己经 定义过的,不能再定义了,需要加以保留。使用者不能用关键字作为所定义的标识符,因此,读者要知道系统已经使用了哪些保留字。下面将它们分类说明如下(关于这些关键字的含意及用法本书后面章节会有详细讲解)。 (1)标识类型的关键字 int,char,long,float,double,short,unsigned, st
18、ruct,union,enum,auto,extern, static,register,typedef , void。 (2)标识控制流的关键字 gato,return,break,continue,if,else,default,do,while,sW1tC11,case。 (3)标识预处理功能的关键字 define,include,undef , ifdef,ifndef,endif, lin。等。 (4)其他关键字 sizeof , asm, fortran .ada,pascal等, 上述的标识符都是系统已有定义的保留字,读者不得再重新定义。3.运算符 运算符是用来表示某种运算操作的
19、一种符号,有的运算符用一个字符组成,也有的运算符由多个字符组成。有的运算符只要求有一个操作数,这种运算符叫单目运算符;有的运算符要求有两个操作数,称为双目运算符;还有要求有三个操作数的运算符,称为三目运算符。C语言中运算符种类繁多,优先级复杂,还有结合性等问题,本书第三章中专门讲述运算符问题。4.分隔符 分隔符是用来分隔多个变量、数据项、表达式等的符号。C语言中常用的分隔符有逗号,空白符,分号和膏号。下面介绍这些分隔符的使用方法。 (I)逗号作为分隔符用来分隔多个变量和函数参数。例如,在说明语句中,同种类型的多个变量可用逗号将其变量分隔开: int a, b, c, d; 这表示变量a, b,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c语言基础教程 第一章 c语言概述 语言 基础教程 概述
限制150内