c语言知识学习(前四章).doc
《c语言知识学习(前四章).doc》由会员分享,可在线阅读,更多相关《c语言知识学习(前四章).doc(105页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、,第一章 c语言概述第一节C语言的发展过程前言:语言是在 70 年代初问世的。一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了语言。同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一书。通常简称为K&R,也有人称之为K&R标准。但是,在K&R中并没有定义一个完整的标准C 语言,后来由美国国家标准协会(American National Standards Institute)在此基础上制定了一个C 语言标准,于一九八三年发表。通常称之为ANSI C。C语言之父里奇在学习C语言之前,我们先了解一下C语言的历史
2、。C语言是一门通用的,模块化,程序化的编程语言,被广泛应用于操作系统和应用软件的开发。由于其高效和可移植性,适应于不同硬件和软件平台,深受开发员的青睐。C语言早期发展 1969 - 1973年在 AT&T 贝尔实验室开始了 C语言的最初研发。根据 C语言的发明者丹尼斯.里奇 (Dennis Ritchie) 说,C 语言最重要的研发时期是在 1972 年。C语言之所以命名为C,是因为 C语言源自 Ken Thompson 发明的 B语言,而 B语言则源自 BCPL语言。C语言的诞生是和UNIX操作系统的开发密不可分的,原先的 UNIX操作系统都是用汇编语言写的,1973年 UNIX操作系统的核
3、心用C语言改写,从此以后,C语言成为编写操作系统的主要语言。K&R C 1978年, Brian Kernighan 和 Dennis Ritchie 出版了一本书,名叫The C Programming Language(中文译名为C程序设计语言)。这本书被 C语言开发者们称为K&R,很多年来被当作 C语言的非正式的标准说明。人们称这个版本的 C语言为K&R C。1988年 Brian Kernighan 和 Dennis Ritchie 修改此书,出版了The C Programming Language第二版,第二版涵盖了ANSI C语言标准。第二版从此成为大学计算机教育有关C语言的经典
4、教材,多年后也没再出现过更好的版本。ANSI C 1970到80年代,C语言被广泛应用,从大型主机到小型微机,也衍生了C语言的很多不同版本。为统一C语言版本,1983年美国国家标准局 (American National Standards Institute,简称ANSI)成立了一个委员会,来制定 C语言标准。1989年 C语言标准被批准,被称为 ANSI X3.159-1989 Programming Language C。这个版本的C语言标准通常被称为ANSI C。目前,几乎所有的开发工具都支持ANSI C标准。是C语言用得最广泛的一个标准版本。C99 在ANSI C 标准确立之后,C语
5、言的规范在很长一段时间内都没有大的变动。1995年 WG14小组对 C语言进行了一些修改,成为后来的 1999年发布的 ISO/IEC 9899:1999标准,通常被成为 C99。 但是各个公司对 C99的支持所表現出来的兴趣不同。当GCC和其它一些商业编译器支持C99的大部分特性的時候,微软和 Borland却似乎对此不感兴趣。C 语言对其它语言的影响 很多编程语言都深受 C语言的影响,比如C+(原先是C语言的一个扩展),C#,Java,PHP, Javascript, Perl,LPC 和 UNIX 的C Shell。也正因为 C语言的影响力,掌握 C语言的人,再学其它编程语言,大多能很快
6、上手,触类旁通。接下来,我们开始具体讲解C语言。要学好一门编程语言,一定要边学边练,你要有一个 C语言的开发工具,在此教程中,我们使用微软的Visual Studio 开发C语言程序。第二节 C语言是当代最优秀的程序设计语言早期的C 语言主要是用于UNIX系统。由于语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代,C开始进入其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用,成为当代最优秀的程序设计语言之一。下面,介绍一下C语言的优秀之处:1. 语言简洁,使用方便灵活 C语言是现有程序设计语言中规模最小的语言之一,而小的语言体系往往能设计出较好的程序。C语言的关键字很少
7、,ANSI C标准一共只有32个关键字,9种控制语句,压缩了一切不必要的成份。C语言的书写形式比较自由,表达方法简洁,使用一些简单的方法就可以构造出相当复杂的数据类型和程序结构。2. 可移植性好 用过汇编语言的读者都知道,即使是功能完全相同的一种程序,对于不同的单片机,必须采用不同的汇编语言来编写。这是因为汇编语言完全依赖于单片机硬件。而现代社会中新器件的更新换代速度非常快,也许我们每年都要跟新的单片机打交道。如果每接触一种新的单片机就要学习一次新的汇编语言,那么也许我们将一事无成,因为每学一种新的汇编语言,少则几月,多则上年,那么我们还有多少时间真正用于产品开发呢?C语言是通过编译来得到可执
8、行代码的,统计资料表明,不同机器上的C语言编译程序80%的代码是公共的,C语言的编译程序便于移植,从而使在一种单片机上使用的C语言程序,可以不加修改或稍加修改即可方便地移植到另一种结构类型的单片机上去。这大大增强了我们使用各种单片机进行产品开发的能力。3. 表达能力强 C语言具有丰富的数据结构类型,可以根据需要采用整型、实型、字符型、数组类型、指针类型、结构类型、联合类型、枚举类型等多种数据类型来实现各种复杂数据结构的运算。C语言还具有多种运算符,灵活使用各种运算符可以实现其他高级语言难以实现的运算。4. 表达方式灵活 利用C语言提供的多种运算符,可以组成各种表达式,还可采用多种方法来获得表达
9、式的值,从而使用户在程序设计中具有更大的灵活性。C语言的语法规则不太严格,程序设计的自由度比较大,程序的书写格式自由灵活。程序主要用小写字母来编写,而小写字母是比较容易阅读的,这些充分体现了C语言灵活、方便和实用的特点。5. 可进行结构化程序设计 C语言是以函数作为程序设计的基本单位的,C语言程序中的函数相当于汇编语言中的子程序。C语言对于输入和输出的处理也是通过函数调用来实现的。各种C语言编译器都会提供一个函数库,其中包含有许多标准函数,如各种数学函数、标准输入输出函数等。此外C语言还具有自定义函数的功能,用户可以根据自己的需要编制满足某种特殊需要的自定义函数。实际上C语言程序就是由许多个函
10、数组成的,一个函数即相当于一个程序模块,因此C语言可以很容易地进行结构化程序设计。6. 可以直接操作计算机硬件 C语言具有直接访问单片机物理地址的能力,可以直接访问片内或片外存储器,还可以进行各种位操作。7. 生成的目标代码质量高 众所周知,汇编语言程序目标代码的效率是最高的,这就是为什么汇编语言仍是编写计算机系统软件的重要工具的原因。但是统计表明,对于同一个问题,用C语言编写的程序生成代码的效率仅比用汇编语言编写的程序低10%20%。尽管C语言具有很多的优点,但和其他任何一种程序设计语言一样也有其自身的缺点,如不能自动检查数组的边界,各种运算符的优先级别太多,某些运算符具有多种用途等。但总的
11、来说,C语言的优点远远超过了它的缺点。经验表明,程序设计人员一旦学会使用C语言之后,就会对它爱不释手,尤其是单片机应用系统的程序设计人员更是第三节 C语言版本概述目前最流行的语言有以下几种:1、Microsoft C 或称 MS C2、Borland Turbo C 或称 Turbo C3、AT&T C这些语言版本不仅实现了ANSI C标准,而且在此基础上各自作了一些扩充,使之更加方便、完美。ISO发布C语言标准新版本 ISO(International Organization for Standardization)于2011年4月正式公布C语言新的国际标准草案。之前被命名为C1X的新标准
12、将被称为ISO/IEC 9899:2011。新的标准修订了C11版本,提高了对C+的兼容性,并将新的特性增加到C语言中。新功能包括支持多线程, 基于ISO/IEC TR 19769:2004规范下支持Unicode,提供更多用于查询浮点数类型特性的宏定义和静态声明功能。根据草案规定,最新发布的标准草案修订了许多特性,支持当前的编译器。今年10月份,ISO ITTF(Information Technology Task Force)开始接手最终草案审查,对此未发表任何评论。 该草案的修改是基于2011年4月通过的N1570 draftPDF。 第四节 C语言的特点1、C语言简洁、紧凑,使用方便
13、、灵活。 ANSI C一共只有32个关键字: 1、auto2、break3、case4、char5、const6、continue7、default8、do9、double10、else11、enum12、extern13、float14、for15、goto16、if17、int18、long19、register20、return21、short22、signed23、static24、sizeof25、struct26、switch27、typedef28、union29、unsigned30、void31、volatile32、while 9种控制语句,程序书写自由,主要用小写字母表示
14、,压缩了一切不必要的成分。 Turbo C扩充了11个关键字:asm _cs _ds _es _ss cdecl far huge interrupt near pascal注意:在C语言中,关键字都是小写的。2、运算符丰富。 共有34种。C把括号、赋值、逗号等都作为运算符处理。从而使C的运算类型极为丰富,可以实现其他高级语言难以实现的运算。3、数据结构类型丰富。4、具有结构化的控制语句。5、语法限制不太严格,程序设计自由度大。6、C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。因此有人把它称为中级语言。7、生成目标代码质量高,程序执行效
15、率高。8、与汇编语言相比,用C语言写的程序可移植性好。但是,C语言对程序员要求也高,程序员用C写程序会感到限制少、灵活性大,功能强,但较其他高级语言在学习上要困难一些。 第五节 C语言面向对象的程序设计语言首先介绍面向对象编程。面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。面向对象程序设计中的概念主要包括:对象
16、、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。通过这些概念面向对象的思想得到了具体的体现。 1)对象 对象是运行期的基本实体,它是一个封装了数据和操作这些数据的代码的逻辑实体。 2)类 类是具有相同类型的对象的抽象。一个对象所包含的所有数据和代码可以通过类来构造。 3)封装 封装是将数据和代码捆绑到一起,避免了外界的干扰和不确定性。对象的某些数据和代码可以是私有的,不能被外界访问,以此实现对数据和代码不同级别的访问权限。 4)继承 继承是让某个类型的对象获得另一个类型的对象的特征。通过继承可以实现代码的重用:从已存在的类派生出的一个新类将自动具有原来那个类的特性,同时,它还可以拥
17、有自己的新特性。 5)多态 多态是指不同事物具有不同表现形式的能力。多态机制使具有不同内部结构的对象可以共享相同的外部接口,通过这种方式减少代码的复杂度。 6)动态绑定 绑定指的是将一个过程调用与相应代码链接起来的行为。动态绑定是指与给定的过程调用相关联的代码只有在运行期才可知的一种绑定,它是多态实现的具体形式。7)消息传递 对象之间需要相互沟通,沟通的途径就是对象之间收发信息。消息内容包括接收消息的对象的标识,需要调用的函数的标识,以及必要的信息。消息传递的概念使得对现实世界的描述更容易。8)方法 方法(Method)是定义一个类可以做的,但不一定会去做的事。在C的基础上,一九八三年又由贝尔
18、实验室的Bjarne Strou-strup推出了C+。 C+进一步扩充和完善了语言,成为一种面向对象的程序设计语言。C+目前流行的最新版本是Borland C+,Symantec C+和Microsoft VisualC+。C+提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。第六节 C语言和C+的区别与对比C是C+的基础,C+语言和语言在很多方面是兼容的。因此,掌握了语言,再进一步学习C+就能以一种熟悉的语法来学习面向对象的语言,从而达到事
19、半功倍的目的。差不多是win8跟winXP的关系。C+是在C的基础上增加了新的理论,玩出了新的花样。所以叫C+。C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。 C+,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C+的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C+比C更先进,是因为“ 设计这个概念已经被融入到C+之中 ”。C语言与C的区别有很多,下面是简要概述:1、全新的程
20、序程序思维,C语言是面向过程的,而C是面向对象的。2、C语言有标准的函数库,它们松散的,只是把功能相同的函数放在一个头文件中;而C+对于大多数的函数都是有集成的很紧密,特别是C语言中没有的C+中的API是对Window系统的大多数API有机的组合,是一个集体。但你也可能单独调用API。3、特别是C+中的图形处理,它和C语言的图形有很大的区别。C语言中的图形处理函数基本上是不能用在C+中的。C语言标准中不包括图形处理。4、C和C+中都有结构的概念,但是在C语言中结构只有成员变量,而没成员方法,而在C+中结构中,它可以有自己的成员变量和成员函数。但是在C语言中结构的成员是公共的,什么想访问它的都可
21、以访问;而在VC+中它没有加限定符的为私有的。5、C语言可以写很多方面的程序,但是C+可以写得更多更好,C+可以写基于DOS的程序,写DLL,写控件,写系统。6、C语言对程序的文件的组织是松散的,几乎是全要程序处理;而c+对文件的组织是以工程,各文件分类明确。7、C+中的IDE很智能,和VB一样,有的功能可能比VB还强。8、C+对可以自动生成你想要的程序结构使你可以省很多时间。有很多可用工具如加入MFC中的类的时候,加入变量的时候等等。9、C+中的附加工具也有很多,可以进行系统的分析,可以查看API;可以查看控件。10、调试功能强大,并且方法多样。第七节 简单的C程序介绍为了说明语言源程序结构
22、的特点,先看以下几个程序。这几个程序由简到难,表现了语言源程序在组成结构上的特点。虽然有关内容还未介绍,但可从这些例子中了解到组成一个C源程序的基本部分和书写格式。【例1.1】 main() printf(世界,您好!n); 1.main是主函数的函数名,表示这是一个主函数。2.每一个C源程序都必须有,且只能有一个主函数(main函数)。3.函数调用语句,printf函数的功能是把要输出的内容送到显示器去显示。4.printf函数是一个由系统定义的标准函数,可在程序中直接调用。【例1.2】 #include #include main() double x,s; printf(input nu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 知识 学习 前四章
限制150内