欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    函数41函数的声明与调.ppt

    • 资源ID:6407356       资源大小:682.50KB        全文页数:81页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    函数41函数的声明与调.ppt

    第4章 函数,4.1 函数的声明与调用,4.2 函数参数的传递,4.3 作用域与生存期,4.4 局部变量和全局变量,4.5 变量的存储类别,4.6 函数的嵌套和递归,4.7 预处理命令,4.8 C+语言的库函数,小结,第4章 函数,函数(Function)是功能抽象的模块,函数,参数,返回值,输入流,输出流,第4章 函数,函数(Function)是功能抽象的模块,函数作用 任务划分;代码重用 函数是C+程序的重要组件,函数定义由两部分组成:函数首部和函数操作描述 函数调用是通过表达式或语句激活并执行函数代码的过程,4.1 函数的定义和调用,/求圆柱体体积#include double volume(double radius,double height)return 3.14*radius*radius*height;void main()double vol,r,h;cin r h;vol=volume(r,h);cout Volume=vol endl;,函数定义由两部分组成:函数首部和函数操作描述 函数调用是通过表达式或语句激活并执行函数代码的过程,4.1 函数的定义和调用,/求圆柱体体积#include double volume(double radius,double height)return 3.14*radius*radius*height;void main()double vol,r,h;cin r h;vol=volume(r,h);cout Volume=vol endl;,函数定义,函数定义由两部分组成:函数首部和函数操作描述 函数调用是通过表达式或语句激活并执行函数代码的过程,4.1 函数的定义和调用,/求圆柱体体积#include double volume(double radius,double height)return 3.14*radius*radius*height;void main()double vol,r,h;cin r h;vol=volume(r,h);cout Volume=vol endl;,函数调用,函数定义形式,类型 函数名(形式参数表)语句序列,4.1.1 函数定义,函数定义形式,类型 函数名(形式参数表)语句序列,函数头函数接口,包括:,4.1.1 函数定义,函数定义形式,类型 函数名(形式参数表)语句序列,函数头函数接口,包括:,函数返回值类型 函数体中由 return 语句返回的值的类型。没有 返回值其类型为void,4.1.1 函数定义,函数定义形式,类型 函数名(形式参数表)语句序列,函数头函数接口,包括:,函数返回值类型 函数体中由 return 语句返回的值的类型。没有 返回值其类型为void,函数名 用户定义标识符,4.1.1 函数定义,函数定义形式,类型 函数名(形式参数表)语句序列,函数头函数接口,包括:,函数返回值类型 函数体中由 return 语句返回的值的类型。没有 返回值其类型为void,函数名 用户定义标识符,形式参数表 逗号分隔的参数说明表列,缺省形式参数时不 能省略圆括号。一般形式为:类型 参数1,类型 参数2,类型 参数n,4.1.1 函数定义,函数定义形式,函数头函数接口,类型 函数名(形式参数表)语句序列,函数体函数的实现代码。,4.1.1 函数定义,例4-1,void printmessage()cout How do you do!endl;,4.1.1 函数定义,例4-1,void printmessage()cout How do you do!endl;,函数返回值类型无返回值,4.1.1 函数定义,例4-1,void printmessage()cout How do you do!endl;,函数名,4.1.1 函数定义,例4-1,void printmessage()cout How do you do!endl;,形式参数表无参数,4.1.1 函数定义,例4-1,void printmessage()cout How do you do!endl;,函数体无 return 语句,4.1.1 函数定义,例4-2,double max(double x,double y)if(x y)return x;else return y;,4.1.1 函数定义,例4-2,double max(double x,double y)if(x y)return x;else return y;,函数返回值类型,4.1.1 函数定义,例4-2,double max(double x,double y)if(x y)return x;else return y;,函数名,4.1.1 函数定义,例4-2,double max(double x,double y)if(x y)return x;else return y;,形式参数表,4.1.1 函数定义,例4-2,double max(double x,double y)if(x y)return x;else return y;,函数体,4.1.1 函数定义,例4-2,double max(double x,double y)if(x y)return x;else return y;,返回值,return 语句形式:return 表达式 或return(表达式)作用:返回函数值 不再执行后续语句,程序控制返回调用点 一个函数体内可以有多个return 语句 表达式 返回值的类型与函数类型不相同时,自动强制转换成函数的类型,4.1.1 函数定义,例4-2,double max(double x,double y)if(x y)return x;else return y;,Type FunctionName()/statements return expression;void FunctionName()/statements return;/可省略,4.1.1 函数定义,调用形式,函数名(实际参数表),4.1.2 函数调用,调用形式,函数名(实际参数表),函数名 函数的入口地址,4.1.2 函数调用,调用形式,函数名(实际参数表),函数名 函数的入口地址,实际参数表 与形式参数必须在个数、类型、位置一一对应,4.1.2 函数调用,#includevoid printmessage()cout How do you do!endl;void main()printmessage();,例4-3,4.1.2 函数调用,#includevoid printmessage()cout How do you do!endl;void main()printmessage();,函数调用语句,例4-3,4.1.2 函数调用,例4-4,#includedouble max(double x,double y)if(x y)return x;else return y;void main()double a,b;cin a b;double m=max(a,b);cout max(m,3.5)endl;,4.1.2 函数调用,例4-4,#includedouble max(double x,double y)if(x y)return x;else return y;void main()double a,b;cin a b;double m=max(a,b);cout max(m,3.5)endl;,函数调用表达式,4.1.2 函数调用,例4-4,#includedouble max(double x,double y)if(x y)return x;else return y;void main()double a,b;cin a b;double m=max(a,b);cout max(m,a+3.5)endl;,cout max(max(a,b),a+3.5)endl;,实际参数是表达式,4.1.2 函数调用,函数原型的作用是告诉编译器有关函数的信息:函数的名字函数返回的数据类型函数要接受的参数个数、参数类型和参数的顺序 编译器根据函数原型检查函数调用的正确性 函数原型的形式:类型 函数名(形式参数表);,4.1.3 函数原型,函数原型的作用是告诉编译器有关函数的信息:函数的名字函数返回的数据类型函数要接受的参数个数、参数类型和参数的顺序 编译器根据函数原型检查函数调用的正确性 函数原型的形式:类型 函数名(形式参数表);,函数原型是声明语句,4.1.3 函数原型,#include double max(double,double);/函数原型void main()double a,b,c,m1,m2;cout a b c;m1=max(a,b);/函数调用 m2=max(m1,c);cout y)return x;else return y;,使用函数原型,4.1.3 函数原型,#include double max(double,double);/函数原型void main()double a,b,c,m1,m2;cout a b c;m1=max(a,b);/函数调用 m2=max(m1,c);cout y)return x;else return y;,函数原型的参数表不需要参数名,使用函数原型,4.1.3 函数原型,#include double max(double,double);/函数原型void main()double a,b,c,m1,m2;cout a b c;m1=max(a,b);/函数调用 m2=max(m1,c);cout y)return x;else return y;,函数调用出现在定义之前函数原型声明是必须的,使用函数原型,4.1.3 函数原型,函数定义在调用之前,#include double max(double x,double y)/函数定义 if(x y)return x;else return y;void main()double a,b,c,m1,m2;cout a b c;m1=max(a,b);/函数调用 m2=max(m1,c);cout Maximum=m2 endl;,4.1.3 函数原型,函数定义在调用之前,#include double max(double x,double y)/函数定义 if(x y)return x;else return y;void main()double a,b,c,m1,m2;cout a b c;m1=max(a,b);/函数调用 m2=max(m1,c);cout Maximum=m2 endl;,4.1.3 函数原型,math.h中几个常用的数学函数,4.1.3 函数原型,/例4-5 用库函数求正弦和余弦值#include#include void main()double pi=3.1415926535;double x,y;x=pi/2;y=sin(x);cout sin(x)=y endl;y=cos(x);cout cos(x)=y endl;,4.1.3 函数原型,/例4-5 用库函数求正弦和余弦值#include#include void main()double pi=3.1415926535;double x,y;x=pi/2;y=sin(x);cout sin(x)=y endl;y=cos(x);cout cos(x)=y endl;,包含头文件,4.1.3 函数原型,/例4-5 用库函数求正弦和余弦值#include#include void main()double pi=3.1415926535;double x,y;x=pi/2;y=sin(x);cout sin(x)=y endl;y=cos(x);cout cos(x)=y endl;,调用库函数,4.1.3 函数原型,内联函数,内联函数是C+降低小程序调用开销的一种机制编译时将所调用的函数的代码直接嵌入到调用函数的调用处,没有函数调用的开销。,内联函数的作用 减少频繁调用小子程序运行的时间开销,内联函数机制 编译器在编译时,将内联函数的调用以相应代码代替,内联函数声明inline 函数名,注:内联函数仅在函数原型或定义时作一次声明。适用于只有1 5行的小函数 不能含有复杂结构控制语句,不能递归调用,内联函数,例:,inline int smallf();main()a=smallf();.int smallf().,inline int smallf().main()a=smallf().,内联函数,错误说明:,inline int smallf();main()a=smallf();.inline int smallf().,重复说明,语法错误,内联函数,错误说明:,inline int smallf();main()a=smallf();.inline int smallf().,int smallf();main()a=smallf();.inline int smallf().,作普通函数处理,内联函数,/例4-6 内联函数示例#include inline double volume(double,double);/函数原型void main()double vol,r,h;cin r h;vol=volume(r,h);cout Volume=vol endl;double volume(double radius,double height)return 3.14*radius*radius*height;,编译器变换为:vol=3.14*r*r*h;,内联函数,C+有三种参数传递机制:值传递指针传递引用传递,4.2 函数参数的传递,调用函数时,实参表达式的值被复制到相应形参标识的对象中,并按形参类型强制转换 函数内对形参的访问、修改,都在形参的标识对象进行 函数返回时,形参对象被撤消,不影响实参的值 值传送的实参可以是常量、有确定值的变量或表达式 函数返回值通过匿名对象传递,4.2.1 传值参数,1值传递机制,/例4-7 强制类型转换#include void main()float add1(float,float);/函数原型 float add2(int,int);/函数原型 float a,b,c;cin a b;c=add1(a,b);cout c1=c endl;c=add2(1/a,1/b);cout c2=c endl;float add1(float x,float y)return(x+y);float add2(int i,int j)return(i+j);,4.2.1 传值参数,/例4-7 强制类型转换#include void main()float add1(float,float);/函数原型 float add2(int,int);/函数原型 float a,b,c;cin a b;c=add1(a,b);cout c1=c endl;c=add2(1/a,1/b);cout c2=c endl;float add1(float x,float y)return(x+y);float add2(int i,int j)return(i+j);,1值传递机制,4.2.1 传值参数,#includeint add(int,int);void main()int a,b,c;cin a b;c=add(a,b);cout c=c endl;int add(int i,int j)i+;j+;return(i+j);,int a,b,c;,/例4-8 值参传递,1值传递机制,4.2.1 传值参数,#includeint add(int,int);void main()int a,b,c;cin a b;c=add(a,b);cout c=c endl;int add(int i,int j)i+;j+;return(i+j);,cin a b;,/例4-8 值参传递,1值传递机制,4.2.1 传值参数,#includeint add(int,int);void main()int a,b,c;cin a b;c=add(a,b);cout c=c endl;int add(int i,int j)i+;j+;return(i+j);,c=add(a,b);,/例4-8 值参传递,1值传递机制,4.2.1 传值参数,#includeint add(int,int);void main()int a,b,c;cin a b;c=add(a,b);cout c=c endl;int add(int i,int j)i+;j+;return(i+j);,int add(int i,int j),/例4-8 值参传递,1值传递机制,4.2.1 传值参数,#includeint add(int,int);void main()int a,b,c;cin a b;c=add(a,b);cout c=c endl;int add(int i,int j)i+;j+;return(i+j);,2,4,i+;j+;,/例4-8 值参传递,1值传递机制,4.2.1 传值参数,#includeint add(int,int);void main()int a,b,c;cin a b;c=add(a,b);cout c=c endl;int add(int i,int j)i+;j+;return(i+j);,i,j,2,4,return(i+j);,/例4-8 值参传递,3+5,1值传递机制,4.2.1 传值参数,#includeint add(int,int);void main()int a,b,c;cin a b;c=add(a,b);cout c=c endl;int add(int i,int j)i+;j+;return(i+j);,i,j,2,4,return(i+j);,/例4-8 值参传递,1值传递机制,4.2.1 传值参数,#includeint add(int,int);void main()int a,b,c;cin a b;c=add(a,b);cout c=c endl;int add(int i,int j)i+;j+;return(i+j);,i,j,8,2,4,c=add(a,b);,/例4-8 值参传递,1值传递机制,4.2.1 传值参数,#includeint add(int,int);void main()int a,b,c;cin a b;c=add(a,b);cout c=c endl;int add(int i,int j)i+;j+;return(i+j);,8,c=add(a,b);,/例4-8 值参传递,1值传递机制,4.2.1 传值参数,#includeint add(int,int);void main()int a,b,c;cin a b;c=add(a,b);cout c=c endl;int add(int i,int j)i+;j+;return(i+j);,8,输出,c=8,cout c=c endl;,/例4-8 值参传递,1值传递机制,4.2.1 传值参数,2实际参数求值的副作用,C+没有规定在函数调用时实际参数的求值顺序 若实际参数表达式之间有求值关联,同一个程序在不同编译器可能 产生不同的运行结果,2实际参数求值的副作用,#include int add(int x,int y)return x+y;void main()int x=4,y=6;int z=add(+x,x+y);cout 5+11=z?!n;,从右向左计算实参表,x+y,2实际参数求值的副作用,从右向左计算实参表,5,6,10,+x,5,#include int add(int x,int y)return x+y;void main()int x=4,y=6;int z=add(+x,x+y);cout 5+11=z?!n;,2实际参数求值的副作用,#include int add(int x,int y)return x+y;void main()int x=4,y=6;int z=add(+x,x+y);cout 5+11=z?!n;,从右向左计算实参表,5,x,y,10,5+10,2实际参数求值的副作用,#include int add(int x,int y)return x+y;void main()int x=4,y=6;int z=add(+x,x+y);cout 5+11=z?!n;,从右向左计算实参表,5,x,y,10,5+10,2实际参数求值的副作用,#include int add(int x,int y)return x+y;void main()int x=4,y=6;int z=add(+x,x+y);cout 5+11=z?!n;,从右向左计算实参表,5,x,y,10,15,2实际参数求值的副作用,#include int add(int x,int y)return x+y;void main()int x=4,y=6;int z=add(+x,x+y);cout 5+11=z?!n;,15,x,y,z,2实际参数求值的副作用,#include int add(int x,int y)return x+y;void main()int x=4,y=6;int z=add(+x,x+y);cout 5+11=z?!n;,修改程序,+x;int z=add(x,x+y);cout 5+11=z n;,3默认参数,C+允许指定传值参数的默认值。当函数调用中省略默认参数时,默认值自动传递给被调用函数 默认参数在函数原型定义 默认参数放在一般参数之后,/例4-9 使用默认参数#include double power(double real,int n=2);void main()double r=3.0;cout power(r)endl;cout power(r,3)endl;double power(double real,int n)if(n=0)return 1.0;double result=real;for(int i=2;i=n;i+)result*=real;return result;,/例4-9 使用默认参数#include double power(double real,int n=2);void main()double r=3.0;cout power(r)endl;cout power(r,3)endl;double power(double real,int n)if(n=0)return 1.0;double result=real;for(int i=2;i=n;i+)result*=real;return result;,定义默认参数,/例4-9 使用默认参数#include double power(double real,int n=2);void main()double r=3.0;cout power(r)endl;cout power(r,3)endl;double power(double real,int n)if(n=0)return 1.0;double result=real;for(int i=2;i=n;i+)result*=real;return result;,使用默认参数power(r,2),/例4-9 使用默认参数#include double power(double real,int n=2);void main()double r=3.0;cout power(r)endl;cout power(r,3)endl;double power(double real,int n)if(n=0)return 1.0;double result=real;for(int i=2;i=n;i+)result*=real;return result;,不使用默认参数,int f();void delay(int k,int time=f();,OK!,3默认参数,int f();void delay(int k,int time=f();,void ferror1(int x,int y=1,int z);,Error!,3默认参数,int f();void delay(int k,int time=f();,void ferror1(int x,int y=1,int z);,void ferror2(int x,int y=0);void ferror2(int x);ferror2(3);/调用哪个函数?,Error!,3默认参数,练习,定义和调用max函数,求3个数中的最大值.,定义和调用max函数,求3个数中的最大值.,#include float max(float,float);/函数原型声明void main()float x,y,z,m1,m2;coutxyz;m1=max(x,y);m2=max(m1,z);coutn)return m;else return n;,

    注意事项

    本文(函数41函数的声明与调.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开