C_C程序设计与上机指导004(精)_第1页
C_C程序设计与上机指导004(精)_第2页
免费预览已结束,剩余15页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Company I ogo第4章函数:结构化程序设计的基本思路是把一个复杂问题的 求解过程分阶段进行,各阶段处理的问题都控制 在人们容易理解和处理的范围内。 多釆用“自顶 向下, 逐步细化”的方法,最终将一个复杂的问 题细化为由多个小程序模块来完成,各模块间通 过接口相联系。实现这是设计思路的方法就是只4.5结构=1Company Logo用三种基本的程序控制结构来编制程序。 1966年Boh m和Jacopini说明了程序设计语 言中只要有三种基本控制结构就足以表示出各样 的其他形式的结构。4.2 函数定义与声丽:4 2 1函数定义: 4.2.2函数调用与声明Company Logo4. 2

2、.1函数定义二 二 . L斗1.定义的一般格式函数调用从其有无参数传递角度可分为无参函数和有参函数两种。 无参函数的一般形式 (2)有参函数的-般形式 (3)空函数.函数除有卷和无卷以外还有一种是空函数.: 2 形参与实参形参是在函数定义时出现在函数名后括号中的参数。在主调函 数调用某一个函数时,该函数名后的抵号中的参数。函数的形参和实参的特点。Company Logo: 3 函数的返回值函数的返回值是指被调函数执行后,传送给主调函数的值。(1)函数的值是通过return语句带回的。-relurn语句的一般形式为: (2)返回值类型应与函数类型相同。保持一致。若两者不一致, 则以函数类型为准进

3、行类型转换。Company Logo(1)无参函数的一般形式(1)无参辺釵的一般形武类型说明符函数名【丨类型说明iS旬英中类型说明符和函数名称为函数头.类里说明符:指函如的类型,即,函饭返回值的类型.可以足char、iiH、float,double及指纤里尊尊.若省35函数类型.则东统默认为in在有些嚅况卜若函数无返曰虫,此时 西敏类型符可以写为void,函数名:是由用户定义的标识符.函数名后有一个空桔号.其中无参数.但扌舌号不 可少.:其中的内琴祢为函数体.在函数体中的类型说明.是对函数体内所用到的变带的 歿型说明.Company Logo莫型说附悟旬)形式参数衷形式参数简称形参.可以是各种

4、类里的变量.各奏效之间用暹吕阎隔. 半国数披调用时,彩参被来自调冃函敎的实参所皆代.实现土域调函数间数据的传迷.(2)有参函数的一般形金 Company Logo茨蛰说明函敎名() (当调用此说敷时什么旳不做。快用空画效往往眾出于为梅未考虑.结构化程序设计遽 嗇自顶阿下,渥步细化原贝叭在程序设计也期.整个程声只是个框架,各棋块尚未完成, 往往只杲一个空函教.谅明这甲一个具有什么功隹的更数。Company Logo函数的形参和实参的葆点(1)形参只有在被调用时才分配内存空间,在调用结束 时释放。在未发生调用时,并不为其分配空间。-(2)实参可以是常量、变量、表达式、函数、数组、指 针等,都必须具

5、有确定的值。-(3)实参和形参在数量上、顺序上应相同。类型上,应-(4)函数调用过程中数据传送是单向的,只能是实参传 送给形参。因此在函数调用过程中,形参的值会发生 改变,而实参中的值则不变。相同或值兼容。函蠶除有参和无参以夕卜还有一科是宇函数。一股格式为:Company Logo语句的一股形式为return表达式;或者为:return(表达式):语句功能:汁算視达式的值,并逅回给主调函数.一个匪欢只有一个返回值,但可有 缶个return句.因为在一次函数调用中只能有一个rehm语句被执行因此只有一个返Company Logo4. 2.2函数调用与声丽.久函数的调用 (1)函数调用的一般形式-

6、(2)函数调用的方式大致分为三种函数语句方式.函数表达式方式、函数鑒数方式函数语句方式.对无返回值函数的调用一般采用函数语句方式.挪麴达前茲鵜錮翹魁鏑熬注柿况一般是将呗的返回值赋给.韻就誌粘籍孵翳敲譬幾詡勰醴魏約鹫歸菸的返 心2函数声明云鑰欝齋気鑼整醯塾翳警行声明其目的是向编译系统提供必-(1)函数声明的形式 (2)有关函数声明的说明对库函数的调用不需要函数声明.但需在文件开头用榊ncludo命令包含相应头文件.籤叟歸义離觐戒轎諌鱷牆療齬但若函数蹿数定义在主调廳餐富猱贅为整型时.可以不对被调函数作声明.而宜接调用.系统将自动对被调函蠶產專爾扁益魏角数声明,刚从该声明臣置起往后的所有函数都不再枫

7、对该returnCompany Logo函数调用的一般形式 有参亟致函数名(至故列表0:无参函数:函數名():对右参更数.各參数间用逗号隔开.实参数目玄与形多的致目怕同,且类塑也应对应 相同.实参給形参的传迫是按顷宇对应遣行传通的.函数声明的形式二曲城户明足冃站取床娶方式.阮取原也心 權思止力:函数类51函数名(类型类型2八或I函数类型 西数名(类型1形夢癸左2池畚2 4第一种形式是基本形式。也可声明中加上參数名.即弟二种形式。但编译系统不檢直 参数名,因为参数名是什么都无关帶要.如XHTntAxiintyint i卫乂; 丄“I“.:托厶;int b4.3 变量的存储类型和作用域 4.3丄变

8、量的存储类型CompanyLogoCompany Logo*4 3 2变量的作用域Company Logo4. 3.1变量的存储类型.:变量的存储类型是指变量在计算机内存中的存储 位置。在C语言中,不同的存储类别确定所说明 对象在内存中所处的不同存储位置,从而也确定 了所说明对象的作用范围和生存期。-1 .auto(自动)变量2.static(静态)变量3.register(寄存器)变量4.extern(外部扩展)变量Company Logo4. 3.2变量的作用碱翱黠介级wS?和连接程 识别.这种变建肴效性的蠡 讎蠶鬍賜的蠶罷龍騷富1局部变童需勰体臨胞鑼霧辭騙礬变此称为局部变燉或内auto类

9、型的局部变量 (2)register类型的局部变量 (3)statlc类型的局部变最 2全局变量鱷羈臨黯陀果辭貂莘蠶量豁整鬆鑰翳.-(1)static类型的全局变量 (2)extern类型的全局变量Company Logo4.4 函数之向的数無传递:当一个函数由若干个函数构成时,函数之间存在 着一定的联系。这些联系是通过函数间的参数传 递建立起来的。: C语言中函数间数据的传递常采用以下方式:形 参与实参相结合方式、函数返回值方式及全局变 量方式。4 4J形参与实参相结合方式4 4 2函数返回值方式 443全局变量方式筆只在禳调用期间才升菱皐只肴在该迫数虫扌定支的, 可以赧C编律 变量的作 一

10、义语旬在程序中出现的域.Company Logo4. 4.1形参与实参相奮令方式从参数的类型来分,函数间参数传递可分为值传递方式和 址传递方式。 1值传递方式在值传递方式中,主调函数将实参的值复制给被调函数对应的 形参。因此,函数中对形参变毘的操作不会影响实参的值,即 参数的传递是单向的,不能回传。 2址传递方式在址传递方式中,主调函数将实参复制给被调函数对应的形参。 由于.实参是地址.因此.形参和实参是指向同一个地址。函 数中对形参所指示地址中的数据进行操作,也即是对实参所指 地址中的数据进行操作。因此对形参的操作是会影响实参所指 地址中数据的值的,Company Logo4. 4.2函数返

11、回值方E:函数间数据的传递还可通过被调函数的返回值来 完成。在函数调用过程中,被调函数可以返回一 定的值供主调函数使用。:函数返回值可以是C语言中的任意数据类型。如intchar float,甚至是结构哉招軒类型的数 据。由return完成返回。大多数函Compuny Logo4. 4.3全局变量方式二_a上 _:由于全局变量的作用域是从定义处到源文件或源 程序结束处,所以在此区域内的所有函数都使用 该全局变量。因此, 全局变量自然成为实现函数 间数据传递的另一种方式。Compuny Logo4.5函数的嵌套调用命递归调用:前面讲到的函数调用都是简单调用,是一个函数 简单地调用另一个函数。C语

12、言还允许函数的嵌 套调用和递归调用。4.5.1嵌套调用4 5 2递归调用Company Logo C语言不允许在一个函数定义中再定义另一个函数,各函数间是平行的,不存在级别之分。但C语言允许在一个函 数的定义中出现对另一个函数的调用,即函数的嵌套调用。其关系可表示如下图。main萌数仃0函坂 /n尸no; /乂n-f20;遠回伫函数值 a函釵证套漪用示怠目Company Logo4. 5.2递归调用匸二:在调用某一函数过程中,乂直接或间接地调用该 函数的调用方式称为递归调用。 函数直接调用自 身称为直接递归,间接调用自身称为间接递归。Company Logo4.6内部函数和外部南翅:一个函数定

13、义后则可被其他函数调用,即函数从本质上说是全局的。但C语言也允许某一函数只能被某文件内的函数调用。根据函数能否被其他 源文件调用,将函数分为内部函数和外部函数。4.6/1内部函数4 6 2外部函数Company Logo:如果一个函数只能被本文件中的函数调用,而不 能被同一源程序中其它文件的函数调用,则称这 种函数为内部函数。定义的一般形式为:static 类型说明符函数名(形参表) 例如:Company Logostatic int f(int a,int b):内部函数又称静态函数。但此处的static并不是 指存储方式,而是指函数的作用域。因此在不同 的源文件中定义同名的静态函数不会引起

14、混淆。 这有利于进行结构化程序设计,不同程序员编制 自己的模块,而不必担心函数同名问题。Compaoy Logo4- 6.2外部函数= :外部函数在整个源程序中都有效,其定义的一般形式为: extern 类型说明符PKI数名(形参表)例如;extern int f(int a,int b):若在函数定义中没有函数作用域(extern、static)说明,则隐含为externo当一个源文件的函数要调用其它源文件中定义的 外部函数时,应用extern说明被调函数为外部 函数。Compaoy Logo: 4 7 1以TC为歼发环境: 4 7.2以Turbo C或Visual C+ +为开发环境4.

15、7.1以TC为开发环播:(:!)在编译编译状态下,建立一个“项目文件”,扩展名 为prj,文件内容只包括三个文件名。即: filel.c file2.c file3.c扩展名c可以省略。也可以将文件名写在一行上。如 filel file2 file3文件顺序任意。如果源文件不在当前目录,还应指明路径。 (2)在Turbo C主菜单下选择Project菜单的Project nameM项, 按回车。 在出现的对话框内Aa.prj并 回车。 社明桑单项Projectname后裔会显示项旨文侔 名为a.prjo4 7多Company Logo:* (3)按功能键F9,系统会将3个文件翻译成目标文件,并 连接成一个可执行文件a.exe (4)按Ctrl + F9,运行a.exeoCompany Logo4. 7.2以Turbo C或Visual为开发环境 1.用#include命令将file2.c file3.c包含到filel.c中。在filel.c开头加以下语句:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论