版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,函数,第8,2章,函数定义,函数调用之间的描述和参数传递规则,变量的存储类型和特征,函数递归的概念和执行过程中递归程序的编程方法,3,第1节C程序结构,第2节函数定义,第3节函数调用和返回,第4节函数之间的数据传递,第5节变量的存储属性,第6节函数的递归调用,第7节库函数介绍,第4,8.1节C程序结构。几个函数和其他内容分别放在几个源文件中,以达到分别编写和编译的目的,提高运行效率。同时,一个源文件可以被多个C程序共享。源程序文件由一个或多个函数组成。每个源文件都可以独立编译,也就是说,源文件是一个编译单元。说明:6,3函数是最小的功能单元,一个函数可以被不同源文件中的其他函数调用。一个C
2、语言程序只有一个主函数main(),它可以放在任何源文件中。不管主函数在程序中的什么位置,程序都必须从主函数开始,在主函数中结束整个程序。7,5除了主函数,所有函数都是并行的,也就是说,所有函数都是相互独立的,一个函数不从属于另一个函数,函数可以相互调用,但是主函数不能被调用。6.将属于同一个程序的不同源文件组装成一个程序可以通过工程文件来实现。8.模块化是结构化程序设计的基础。模块化编程有很多优点:控制编程的复杂性,提高软件的可靠性,提高软件开发的效率,提高软件的可维护性,提高程序的可重用性。9.功能分类:从用户使用的角度来看,功能分为库功能,由系统提供。用户不需要自己编写这些函数,但是可以
3、直接使用它们。用户功能,即用户自己定义的功能,用于解决用户的特殊需求。从函数的形式来看,函数可以分为:非参数函数。调用非参数函数时,没有必要将数据传递给被调用的函数。参数函数。调用参数函数时,主音函数和调用函数之间有数据传输。10,数据类型函数名称(形式参数表描述)语句执行语句,8.2函数定义,函数定义的一般形式:非参数函数的定义形式:数据类型函数名称()语句执行语句,函数头,函数体,11.1。函数定义中的类型是指函数返回值的类型。函数的返回值不能是数组或函数,除非任何合法的数据类型都可以是函数类型。2.函数类型可以省略。如果未指定函数类型,系统默认函数类型为整数。描述:12,3。函数名是一个
4、标识符,它是函数定义中唯一不能省略的。它用于标识函数,并使用该标识符调用函数。4.形式参数表是一组用逗号分隔的变量描述,包括参数类型和参数标识符。它的功能是在调用主音函数时接受该函数的数据。不能省略非参数函数()。13,5。参数函数的形式参数声明放在函数头中,形式参数的范围只存在于这个函数中。6.封闭部分是功能体。函数体是一个程序,它决定了函数应该执行的指定动作,并体现了函数的功能。不能省略,函数定义示例1。语言中最简单的函数之一:dummy () /*函数名:dummy */没有数据类型描述、参数和参数描述,函数体为空。2.找出阶乘函数的定义。long factor(int x)long y
5、;对于(y=1;x0;-(x)y *=x;返回(y);函数名,形式参数表,函数类型,函数体,函数返回,15,main() int a,b,c;打印(输入一个,bn);Scanf (%d,%d ,形式参数表:它是一组用分隔的变量,用来接收调用时传入的数据,函数调用,3。找出两个变量的最大值,16。参数函数调用的形式是:函数名(实际参数表列);非参数函数调用的形式是:函数名();在函数调用过程中,实际参与的参数数量应该相等,并依次对应。参数可以是常数、变量、表达式,甚至是另一个函数调用的返回值。8.3函数调用和返回,17。函数调用过程:当在一个函数中调用另一个函数时,程序将控制权从调用函数转移到被
6、调用函数,并执行被调用函数。当被调用函数的所有语句都被执行或者遇到返回语句时,程序的控制应该返回到原来调用函数被执行的地方。18,1函数语句调制函数在主音函数中作为语句出现,主音函数通常只完成一个操作,不返回返回值。这是一个程序);main()函数();调用函数有三种方式:19,2函数表达式将函数的调用结果作为运算符的运算成分,被调用的函数必须有这样的返回值。main() int a,b,I,j,c;scanf(“% d % d % d % d”),参数函数0,20,3的调用结果可以用作其他函数的实际参数,并且该函数必须具有返回值c=pow(a,pow(b,I);21,在调用调谐函数之前,主音
7、函数必须声明调谐函数。声明的目的是告诉编译系统函数值是什么类型,有多少个参数,每个参数是什么类型,从而为编译系统检查类型提供依据。函数描述的一般形式函数类型函数名称(参数类型1参数名称,参数类型2参数2,)。函数描述和函数头的唯一区别是函数描述语句中()后必须有分号,而函数定义头中()后没有分号。“描述”和“定义”的区别在于:“描述”只是对编译系统的描述,并不包括具体的执行动作。“定义”是赋予功能的程序主体。23,1当函数的返回值是整数或字符类型时,如果函数是在同一个文件中定义和调用的,则函数声明可以省略,而不管在源程序中定义的函数和调用的函数之间的位置关系如何。2当调整后的函数的返回值为其他
8、类型时,如果函数定义和函数调用在同一个文件中,并且函数定义在源文件中的位置在函数定义之前,则可以省略函数的声明。在下列情况下可以省略函数声明:24,1如果函数定义在源文件中的位置是在调用函数之后,则必须给出被调用函数的声明。如果函数的定义和调用在两个不同的文件中,不管函数的返回值是什么类型,在调用函数之前必须给出函数声明。函数必须在下列情况下声明:25,main()int m;长n;长事实(int x);Scanf(%d),函数执行过程,主()mm=事实(m);事实上(x)返回(y);调用、返回,示例:用函数facto计算m阶乘,函数声明,函数调用,函数定义,函数返回值,26,main() i
9、nt m,n;长cmn长事实(int x);扫描(%d%d),示例:计算:C(m,n)=m!/(n!*(m-n)!),27,调谐函数的声明可以简化为:函数类型函数名称(参数类型1,参数类型2,上述公式称为函数原型长因子(int);通常,需要在文件中调用的所有函数原型都写在文件的开头。函数原型,28,从函数中返回的两个方法用return语句从调谐函数中退出并返回到调用它的程序(也称为主音函数);如果调谐函数没有返回语句,调谐函数在执行后遇到最外面的函数时将返回到主音函数。返回的双重功能:控制程序退出当前函数(被调用函数),返回调用函数继续执行;从被调用的函数向主音函数返回一个值(称为返回值)。函
10、数的返回值,29,除void类型外,所有函数都有一个返回值,而返回值类型是定义函数时描述的函数类型。当返回值类型为整数int时,定义函数时可以省略函数的数据类型定义描述。max (int x,int y)int z;z=x y?x :y;返回(z);对于返回值类型为非整数的函数,在定义函数时,必须明确函数的数据类型;返回值指定:30,返回语句1: return的格式和函数格式;功能:将控制从调谐功能返回到主调谐功能。格式2:返回(表达式);或者:返回表达式;函数:计算调整后函数中表达式的值,根据函数描述的函数类型将计算结果返回给主音函数,并将控制返回给主音函数。31,main() int a,
11、c;Scanf (%d ,示例:32,描述:(1)一个函数只能有一个返回值。(2)如果函数值的类型与返回语句中表达式的类型不一致,以函数类型为准,按照数据类型转换规则进行数据转换,即返回值的类型由函数类型决定。33,主()浮子a=4.5,b=6.8int c;c=最大值(a,b);printf(“最大值为%d”,c);最大值(浮动x,浮动y)浮动z;z=xy?x :y;返回z;Output: MAX为6,34,(3)一个函数体可以有多条返回语句,无论执行哪一条,函数都会结束,将控制流返回给主音函数。如果(x=0)返回(2 * x * x-x);否则返回(2 * x * x);在C语言中,函数的
12、定义是并行的,不允许函数的嵌套定义,即不允许在函数体中定义新的函数。函数之间的调用可以是任意的,也就是说,可以在一个函数中调用其他函数,这称为函数的嵌套调用。函数的嵌套调用,36,主函数调用函数a;函数a调用函数b;函数b、调用、调用、返回、返回、37、void func1()、func 2();printf(“功能1!”);void func2();main()函数1();打印(“主!”);38,可用于不同函数之间的数据传递:参数:通过形式参数和实际参数返回值;用return语句返回计算结果;外部变量函数参数的传递规则:在C语言中,函数参数遵循“值传递”的规则,即调用函数时,参数变量的值被取
13、出并复制到参数变量中,使参数变量的值等于参数变量的值。从参数中复制的值用于函数内部的处理。中的参数可以是表达式。调用时,首先计算表达式的值,然后将结果(值)复制到参数变量。8.4在函数之间传输数据,39,main () int a=5,b=10printf(brfort交换a=%d,b=%dn,a,b);互换(a,b);printf(在swapa=%d,b=%dn,a,b之后);交换(int x,int y)int temp;temp=x。x=y;y=温度;printf(在交换中x=%d,y=%dn,x,y);示例:用函数5交换两个变量的值,main a=5;b=10互换(a,b);交换(x,
14、y)温度=x;报表x=y。语句y=临时。语句,5,10,参数变量a,参数变量b,参数变量x,参数变量y,变量temp,copy,copy,temp=x,x=y,y=temp,调用交换函数,5,10,10,5,41,main()for(I=0;i0;-n)p *=x;返回(p);值传递的优点是被调用的函数不能改变调用函数中变量的值,而只能改变其本地部分的临时副本。这样,可以避免被调用函数的操作对调用函数中的变量可能产生的副作用。值传输的缺点:在值传输模式中,每个形式参数只能传输一个数据。当大量数据需要在函数之间传递时,值传递模式显然不适用。、43、作为函数参数的数组和作为函数参数的数组名必须遵循
15、以下原则:1如果实际参数是数组名,则形式参数可以是数组名或具有相同维数的指针。2参数数组和形状参数组必须是同一类型,并且形状参数组不能指定长度。3当使用数组名作为函数参数时,实际参与的参数都对应数组的第一个地址,函数调用是通过引用实现的。这样,两个阵列共享同一个存储单元。因此,如果形式参数组中元素的值发生变化,实际参数数组元素的值也会同时发生变化。44,void sort(int array,int n ) int i,j,k,t;对于(I=0;I n 1;I)k=I;对于(j=I 1;j . n .j)如果(array j array k)k=j;t=arraykarrayk=arrayiarrayi=t。main() int a10,I;对于(I=0;i 10I)scanf(“% d”),例如,数组中的10个整数按从小到大排序,变量45、4-4的存储类型和范围,数据类型决定了为变量分配的存储单元的长度和数据的存储形式。(从编程的角度来看,它决定了可以表达的数字的范围。)问题1。何时为变量分配内存列表?2.变量在内存中的什么位置?3.变量的有效范围?46,1静态存储:一个变量存储在内存的静态存储区中,存储空间在编译时分配。在整个程序运行期间,变量占据一个固定的存储单元,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新媒体运营(AIGC版)-教学大纲
- 家庭教育指导师亲子关系维护指导书
- 2025 高中信息技术信息系统在城市共享单车调度与管理中的实践课件
- 第十章系统运行和维护管理课件
- 安全生产行为准则严格遵守承诺书(4篇)
- 人才培育及发展承诺函8篇
- 气道狭窄介入治疗技术
- 申请绿色食品认证承诺书范文7篇
- 安全防护责任履行承诺书9篇范文
- 第九章 平面直角坐标系 单元检测(含答案)2025-2026学年人教版七年级数学下册
- 历年中职高考《畜禽营养与饲料》考试真题题库(含答案)
- 初中英语阅读-篇章结构强化练习(附答案)
- 律师事务所投标书(文档)
- 产钳助产护理查房范文
- 公司规章制度及公司规章制度汇编
- ISO22000-2018全套程序文件模板
- 芯片提取基础知识课件
- 《预防血管内导管相关血流感染过程质控工具包》解读
- JJF 1033-2023计量标准考核规范
- 《中国饮食文化》第1章 中国饮食文化的历史发展
- 回顺炮掘工程施工组织设计
评论
0/150
提交评论