




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第八章函数一、概述n一个程序由多个模块(文件)组成,每个模块(文件)又由很多小的功能模块(函数)组成,而且这些功能模块(函数)可能在很多文件模块中都要使用。因此,使用函数可以减少重复劳动语句函数1函数n文件1函数1函数n文件n程序二、说明n1、C程序=多个源文件,便于分别编写、编译、提高效率。n2、一个源程序文件=多个函数。以源文件为单位进行编译。n3、在多个函数中,有且仅有一个main函数,程序从main开始执行。n4、所有函数都是平等的,可以相互调用,但是不能嵌套定义n5、函数=标准函数+用户函数n6、函数=有参函数+无参函数3、定义函数(1)n1、无参函数nType f_Name()n函
2、数内部变量声明n nn如:nInt Add()nint x=2,y=3,z;n z=x+y;n return z;n3、定义函数(2)n2、有参函数nType f_Name(形参变量类型表)n 函数内部变量声明n nn如:int Add(int x,int y)n int z;n z=x+y;n return z;n 形参:在定义函数的时候,它的值是未知的,也就是说它只是形式上存在,并不在内存中占用空间。如x,y4、形参的传统声明形式nType f_Name(形参变量表)n形参变量类型声明n函数内部变量声明n nn如:int Add(x,y)n int x,y;n int z;n z=x+y;
3、n Return z;n 5、函数参数n在调用函数时,主调函数与被调函数之间存在数据传递关系:n实参从主调函数传给被调函数的形参,函数值从被调函数传回到主调函数对应的处。n注意:n1、形参只在进行函数调用的时候才自动分配内存空间,函数调用结束后自动释放所占内存空间n2、实参在任何时候都必须有实际的值,可以是常量或常量表达式n3、实参与形参的类型应该相同或能赋值兼容n4、实参到形参是单向值传递,只能从实参传到形参,形参的改变不会引起实参的改变。6、函数返回值n1、函数的返回值一般是通过return语句带回n1)return ;结束被调函数,返回到主调函数,但是不传递回任何可用的值。(void)n
4、2)return (表达式);结束被调函数,返回到主调函数,并将表达式的值带回到主调函数。n3)return 表达式;同2n2、返回值的类型n1)可以是任何合法的类型n2)。n3)如果函数类型为不写。n4)为了明确表示不带回值,则函数类型为7、举例nmain()n float x,y;n int c;n scanf(%f,%f,&x,&y);n c=max(x,y);n printf(Max is %dn,c);n return ; n int max(float x,float y)n if(xy) return x;n else return (y); max(float,
5、float);main() float x,y; int c; scanf(%f,%f,&x,&y); c=max(x,y); printf(Max is %dn,c); return ; max(float x,float y) if(xy) return x; else return (y); 8、函数原型声明n1、作用:n提前告诉系统,程序中有这样一个函数n2、方法:n在main函数之前,用函数声明语句n3、形式:nType f_Name(形参类型表)9、函数调用n定义了子函数,而且对子函数进行原型声明后,就可以调用子函数了。子函数与主函数的位置可以任意排放。n调用形式:
6、n1、如果函数类型为void,用函数调用语句:f_Name(实参表);n2、否则,将函数调用放在表达式中,或作为函数的参数。如:n d=max(a,max(b,c)/2;10、函数的嵌套调用n因为子函数之间是平等的,因此子函数之间可以相互调用。nmain()nn f1();nn f1()n n f2();n n f2()n n f1();n 11、举例n用弦截法求f(x)=x3-5x2+16x-80=0 的根x1x2xx1、if(f(x1)*f(x2)=0)方程有根2、直线段x1x2与x轴相交于x3、if(f(x1)*f(x)=0)根在x1与x之间,x2=x,否则,根在x与x2之间,x1=x4
7、、重复2、3,直到f(x)无限接近0,即可求出x12、函数的递归调用n递归调用自己调用自己nf1()nn f1();n 13、举例n求n!n n!=n*(n-1)!n (n-1)!=(n-1)*(n-2)!n n 1!=1*0!n 0!=1nn!=fact(n)=n*fact(n-1)=n*(n-1)*fact(n-2)14、数组作为函数参数n1、数组元素作为函数参数n数组元素相当于与一个普通变量,因此数组元素作为函数参数与变量作为函数参数完全一样。n见例题15、数组作为函数参数n2、数组名作为函数参数n1)数组名表示函数的起始地址,是常量n2)数组名作为函数参数是,实参的改变引起形参的改变,
8、形参的改变也会引起实参的改变。n3)数组名作为函数参数,要求实参、形参都是数组,而且类型应该一致n4)。n5)数组名作为函数参数,形参数组和实参数组在同一个内存单元。n见例题16、局部变量nInt F1(int x,int y)nint z;nnInt f2(int a,int b)nint c; nnVoid main()nint m,n; n17、全局变量nInt x,y;nInt f1(int a,int b)nint c; nnFloat z; nInt f2(int c,int d)nint e; n18、变量的类别n1、自动变量auton变量使用结束后自动释放内存空间n一般变量都是auto类型n2、静态变量staticn变量使用结束后不释放内存空间,保留原值n3、寄存器变量registern将使用频繁的变量放在寄存器中。n不能定义太多n加快程序的运行19、外部变量n外部变量(全局变量)在函数外部定义的变量n如果外部变量前面的函数要引用该外部变量,可以用关键字声明n当多个文件组成一个程序,而文件之间要用到同一个变量的时候:20、外部函数n内部函数一个函数只能被本文件调用,在定义和声明的时候加上关键字,作用是多个文件中的同名函数不相
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专题2.9 函数的零点(原卷版)-2024年高考数学一轮复习精讲精练宝典(新高考专用)
- 2022年北京市石景山初三二模英语试卷及答案
- (一模)萍乡市2025年高三第一次模拟考试生物试卷(含答案解析)
- 2020-2021深圳宝文学校小学三年级数学下期中第一次模拟试卷(及答案)
- 机井电力配套施工方案
- 关于活动付款合同范例
- 专利委托合同范例
- 化工劳务合同范例
- 保安工作总结计划装饰行业保安工作的工地保护
- 会计工作与企业发展的关系计划
- 2025年吉林长白朝鲜族自治县事业单位招聘16人历年高频重点提升(共500题)附带答案详解
- 初中历史七年级上册第8课 百家争鸣
- 中国教育史课件
- 幼儿园小班美术欣赏《漂亮的糖纸》课件
- 互联网接入服务提供商服务承诺
- 2024年全国中学生生物学联赛试题含答案
- 城市绿化景观设施安装与维护合同
- 解除冻结及撤销纳入失信和限高令申请书(文本)
- 2024年河北省公务员录用考试《行测》真题及答案解析
- 在线问卷系统的设计与实现
- 英语语法-形容词和副词-复习资料
评论
0/150
提交评论