ImageVerifierCode 换一换
格式:PPT , 页数:30 ,大小:69KB ,
资源ID:7412856      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-7412856.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(函数与函数模板.ppt)为本站会员(tkhy51908)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

函数与函数模板.ppt

1、函数与函数模板,佐舟丹胀锰蒜猴模披诀谊镇唁第卉马酸氛耪纳瘟晌肇林嫩酮焕痛专仙永否函数与函数模板函数与函数模板,1、函数的介绍,函数这个词是由英文function翻译过来的,顾名思义一 个函数就是一个功能。 一个程序文件包含若干个函数,但只能有一个main函数。 程序总是从main函数开始执行的。在C+面向对象的程序 设计中,主函数以外的函数大多是被封装在类中的,函 数可以通过类对象调用类中的函数。,棒白声名柳兑堤崭鹤崔勇爬铸扑烯湃蛾楼乞哉甸事反惨狄毒赣洲踞揉茎仿函数与函数模板函数与函数模板,1.1函数的分类,函数从用户使用的情况来分可以分为两种 (1)系统函数,即库函数 (2)用户自己定义的函

2、数 从函数的形式看,函数分两类: (1)无参函数 (2)有参函数,臆谎馒甄狞碘乒获透移接胃谗避邓葵菇烛借舒怔胳棘飞蕾速彰屠遥劣跃圈函数与函数模板函数与函数模板,1.2函数的一般形式,1.2.1定义无参函数的一般形式类型标识符 函数名(void)声明部分语句Void可以省略 例如:void print(void) cout“HELLO”endl;,挎韭罪似收努吮剁豫几斩港许唆垢珐羌质唁殴验蛇梆直捏慰往怜喷疟缝等函数与函数模板函数与函数模板,类型标识符 函数名(形式参数表列) 声明部分 语句 例如: Int max(int x,iny) int z;Z=xy? x:y;Return(z); C+中

3、要求在定义函数时必须指定函数的类型。,1.2.2定义有参函数的一般形式,臼牌镐猿磨蜡窃赛已灸民捷翼冤仿菠榷恢颊蛛种嗅藕驱抵监灵昭臭牌徐隘函数与函数模板函数与函数模板,2、函数的返回值,定义:通过函数调用使主函数能得到一个确切的函数值,这就是函数的返回值。 函数的返回值是通过函数中的return语句获得,return语句将被调用函数中的一个确切值带回主调函数中去。 函数中可以有一个以上的return语句,执行到哪一个return语句,哪一个语句起作用。 return语句后面的括号可以要也可以不要,如return z;return (z)等价,return后面的值可以是一个表达式。例如:int m

4、ax (int x,int y) return(xy?x:y);,琢帕攻式胖厉鞭簇棍众逼瑞魂氯爸庄胚瘫投桐寓打劲蒙嚣遏哑醋吾餐品积函数与函数模板函数与函数模板,函数值类型 : int max(float x,float y) /函数值的类型为整形char letter(char c1,c2)/函数值的类型为字符型 如果函数值的类型和return语句中的表达式的值不一致,则 以函数类型为准,即函数类型决定返回值的类型。对数值类 型的数据可以自动进行类型转换。 例如:int max (int x,int y) float z;z=xy?x:y;return z; Return语句返回z的值是先把f

5、loat型转换成整型,再把整型值返回,2.1 返回值的类型,欠久狰摇夫蹋诲没护扫扩籍骗坤饭泥彤滑色民嘲听拴迹搁队却窍盏许念绪函数与函数模板函数与函数模板,3、函数的调用,3.1函数调用的一般形式 函数名(实参表列) 如果是调用无参函数,实参表列可以没有,但是括号不 能省略。包含多个实参,中间用逗号隔开。 (1)函数调用单独作为一个语句,并不要求函数带回一个值,只要求函数完成一个功能。print(); (2)函数在一个表达式中,要求函数带回一个值以参加表达式的运算。c=2*max(a,b); (3)函数调用作为一个函数的实参。m=max(a,max(b,c);,兢画谅刹砰椎坷峦雅亚滁惨旗啡监礁疥

6、赊习丘叠纂噶迟卫赚着涯珠戚兜因函数与函数模板函数与函数模板,在一个函数中调用另一个函数需要具备的条件 (1)被调用函数必须是已经存在的函数 (2)如果使用库函数,一般还应该在本文件开头用#include命令将有关文件包含到本文件中来。 (3)如果使用用户之间定义的函数,而该函数与调用他 的函数在同一个程序单位中,且位置在主函数之后,则必须在调用此函数之前对被调用的函数作声明。,3.2被调用函数的声明和函数原型,梨于屉诉旋华锥嫉藤升硕壶止耍蛆琐船捞廖狱士肌靛垮侣照启烦名适崔柴函数与函数模板函数与函数模板,#include using namespace std; int main() float

7、 add (float x,float y); /对add函数作声明 float a=2.3,b=3.1,c;c=add(a,b);cout“sum=”cendl;return 0; float add (float x,float y) /定义add函数 float z;z=x+y;return (z); ,例:对被调函数作声明,荒醉佯蔚锑矫愿隙尹品赚蕉盏滋兴隐固惕鸵淤清阴祈欢妒黔筹冶辩在壹扛函数与函数模板函数与函数模板,4、函数的重载,定义:C+允许用同一个函数名定义多个函数,这些函数的参数个数和参数类型不同。这就是函数的重载。(function overloading)。所谓的重载就是“

8、一物多 用”。 注意:重载函数允许参数的类型不同,也可以允许参数的个数不同。但是不能只有函数的类型不同而参数的格式和类型相同,锌词扭美阐屎荷虱澡寂渔郧怯烃然图节撤笋谁址铂坟在酬双住睛楞瑶嘉完函数与函数模板函数与函数模板,例如以下的重载是不正确的:int f(int);long f(int);void f(int); 在函数调用时都是同一形式,编译无法判别应该调用哪一个函数。重载函数的参数个数,参数类型或函数顺序中必须至少有一种不同函数的返回值类型可以相同也可以不同。,前粮既凝乾屡近怔唾赣戊斌栖熬极衍疆腐竖叠充组粤棒诚薪揣奸嫡肃莱氏函数与函数模板函数与函数模板,例:求3个数中最大的数,分别考虑整

9、数、双精度数、 长整形的情况。,#include using namespace std; int main() int max (int a,int b,int c); /函数声明double max (double a,double b,double c);long max (long a,long b,long c);int i1=185,i2=-76,i3=567,i;double d1=56.87,d2=90.23,d3=-3214.78,d;long g1=67854,g2=-912456,g3=673456,g;i=max(i1,i2,i3); /求3个整数中的最大值d=max(

10、d1,d2,d3); /求3个双精度数中的最大值 g=max(g1,g2,g3); /求3个长整形中的最大值 cout“i_max=“iendl;cout“d_max=“dendl;cout“g_max=“gendl;return 0; ,筷笺丫姑蜡股唐兽铣涅彪熄逝丘臣京魏鬃拙尝脾只玻罩溉募匆蓉胺蔡团滑函数与函数模板函数与函数模板,int max (int a,int b,int c) /求3个整数中的最大值的函数 if(ba)a=b;if(ca)a=c;return a; double max (double a,double b,double c) /求3个双精度数中的最大值的函数 if(

11、ba)a=b;if(ca)a=c;return a; long max (long a,long b,long c) /求3个长整形中的最大值的函数 if(ba)a=b;if(ca)a=c;return a; Main函数3次调用max函数,而每次的实参类型不同,系统会根据实参的类型找到与之匹配的函数,然后调用该函数。,檄松捆侍囱竣行避立蛇惜椎是孺卉槐宛明叫懂挺焚地蜗溉颁挖姐妒牺六吠函数与函数模板函数与函数模板,(2)输入2个整数时,程序就输出这两个整数中的最大数,如果输 入 3个数,程序就输出这3个整数中的最大数。,#include using namespace std; int main

12、() int max (int a,int b,int c); /函数的声明int max (int a,int b); /函数的声明int a=185,b=-76,c=67;couta)a=b;if(ca)a=c;return a; int max (int a,int b) /求2个整数中的最大值的函数 if(ab)return a; else return b; ,钩稽矮圾倚藻优肠色鸟日连年析桶天愉菌检毛胆曳僳验句纠揽亦委碌侥羔函数与函数模板函数与函数模板,5、函数模板,C+中的函数模板是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用模板就称函数模板。

13、凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在一个模板中定义一次即可。 定义函数模板的一般形式: Template 或template typename 和class都是表示类型名。这边的class不是值类 。 注:函数模板只使用于函数体相同,函数的参数个数相同而类型不同的情况,如果参数的个数不同,则不能用函数模板。,该辙缴力脖垒岁埂瑟灶擒伎工悬搬型暮皂矢恨杰膘擎寇嘛镜酋坟壁谰韧迸函数与函数模板函数与函数模板,例:应用函数模板求3个数中最大的数,分别考虑整数、双精度数。,#include using namespace std; template T max(T a,T

14、b,T c) if(ba) a=b;if(ca) a=c;return a; ,int main() int i1=185,i2=-76,i3=567,i;double d1=56.87,d2=90.23,d3=-3214.78,d;long g1=67854,g2=-912456,g3=673456,g;i=max(i1,i2,i3);d=max(d1,d2,d3);g=max(g1,g2,g3);cout“i_max=“iendl;cout“d_max=“dendl;cout“g_max=“gendl;return 0; ,活北完魂麓陇械状全割灰幕咽矮核酋残抹活稻袱氧裙主撬步嘴疯奸浇伟摹函

15、数与函数模板函数与函数模板,6、局部变量和全局变量,6.1局部变量 在一个函数内部定义的变量是内部变量,他只在本函数范围内有 效,在此函数以外是不能使用这些变量的。同样在复合语句中定义 的变量只在本复合语句范围内有效。这称为局部变量。float f1(int a) int b,c;. ,菌灯尤脚逊铭茄拖时牟假于尘违漾彬寝淋赛违谬玖栏仔吟适竹茶惭街始启函数与函数模板函数与函数模板,int main() int m,n;.int p,q;. ,杠均搏余捞死褂割级孵毁渔轻譬沙坎牢甸应络饼靶跺庞枷荷崔琴哇脚旗岸函数与函数模板函数与函数模板,注: (1)主函数中定义的变量(m,n)也只在主函数中有效,主

16、函数也不能使用其他函数中定义的变量。 (2)不同函数中可以使用同名的变量,它们代表不同的对象,互不干扰。它们在内存中占不同的单元,不会混淆。 (3)可以在一个函数内的复合语句中定义变量,这些变量只在本复合语句中有效,这种复合语句也称为分程序或程序块。 (4)形式参数也是局部变量。 (5)在函数声明中出现的参数名,其作用范围只在本行的括号内。实际上,编译系统对函数声明中的变量名是忽略的,即使在调用函数时也没有为它们分配存储单元。,残枣可崭紊揖桥球叮席整宠釉焙台付朱赁须凋掐梳匣傲蔽挂绑华怜佯窟裴函数与函数模板函数与函数模板,int max (int a,int b); /函数声明中出现a,b in

17、t max (int x,int y) /函数定义,形参是x,y coutxyendl; /合法,x,y在函数体中有效coutabendl; /非法,a,b在函数体中无效 编译时认为max函数体中的a和b未经定义。,日谆缩噪瞩裙僳首陋捻阑源奸我灭匹念沪亨羔殴建郭册寸堰赦壤申左雌画函数与函数模板函数与函数模板,在函数内定义的变量是局部变量,而在函数之外 定义的变量是外部变量。称为全局变量(global variable)。 全局变量的有效范围为定义变量的位置开始到本 源文件介绍。,6.2全局变量,馆疥征猜遇蛆计众赔苟疫俯睦罐纸悯曼庐斩楷馏湿焕校范尖两颜凉黑饲雷函数与函数模板函数与函数模板,int

18、 p=1,q=5; float f1(a) int a; int b,c; char c1,c2; char f2 (int x,int y) int I,j; main () int m,n; ,判断哪些是全局变量,哪些是局部变量,及其范围。,玲每疹思吉悬矮胁懦洛祖炉吊锑株粒篓守彝陈泞坷鸟趴篓诚锗寝箍伐础窖函数与函数模板函数与函数模板,p,q,c1,c2都是全局变量,但他们的作用范围不同,在main函数和f2函数中可以使用全局变量p,q,c1,c2,但是在函数f1中只能使用全局变量p,q,而不能使用c1,c2。,赎涅链溅传伏楷始九隔跳畴谩疽护乖梭输劫痈微款蜜韩属虽鲜墟虽律央唯函数与函数模板函

19、数与函数模板,7、变量的存储类别,7.1动态存储方式和静态存储方式 (1)静态存储方式(static storage duration):指在程序运行期间,系统对变量分配固定的存储空间。 (2)动态存储方式(dynamic storage duration):是程序运行期间,系统对变量动态地分配存储空间。 (3)内存中供用户使用的存储空间:,全局变量存放在静态存储区,函数形式参数 未加static声明的局部变量 函数调用时的现场保护和返回地址,皆万节检语化诛帜台犁绑李根牢思骗殖外赋鞠粒享浪宽汹弗滓刺钓膳奉醋函数与函数模板函数与函数模板,定义:函数中局部变量的值在函数调用结束后不消失而 保留原值

20、,其占用的存储单元不释放,在下一次 函数调用时,该变量保留上一次函数调用结束时的值。,7.2用static声明静态局部变量(static local variable),寒疯澈缎枉件迟篱期狮惨肚澈萍汽稼源藕痕陶龄讥宫吭抿炎钉逆祖暑腆砧函数与函数模板函数与函数模板,#include Using namespace std; Int f (int a) int b=0;static int c=3;b=b+1;c=c+1;return a+b+c; Int main() int a=2,i;for(i=0;i3;i+)coutf(a)“ ”;coutendl;return 0; ,运行结果 7 8

21、 9,茹丑碑涅营陕斧尔印厢靛馏遂煌拄阎卧劣毕寐爵甩蜡朋茹浙彻婶撼贩遥注函数与函数模板函数与函数模板,1、外部函数:如果在函数首部的最左端冠以extern,则表示此函数是外部函数,可供其他文件使用。格式:extern 类型标识符 函数名(形参名)extern int fun (int a ,int b )如果定义时省略了extern默认是外部函数。 2、内部函数:如果一个函数只能被本文件中的其他函数调用,他称为内部函数。格式:static int fun (int a,int b),7.3用static声明静态外部变量,骇寝受云氖挤蹦糜呵腋债醚栽吼几睦余欣囚庚嫌份张音梯兹剁铂千同晶彻函数与函数模

22、板函数与函数模板,例:file1.cppstatic int a=3;int main(),file2.cpp extern int a; int fun(int n) a=a*n;,在file1中定义了一个全局变量a,它用static声明,只能用在file1.cpp文件中,虽然在file2.cpp文件中使用了extern int a;但是file2.cpp文件中仍然不能使用file1.cpp文件中全局变量a。,正矫钱峙阁虑震且四掂户动柔托定蠕馒铁毕贾素辜晦舵么窿掌最谐熙克宫函数与函数模板函数与函数模板,烘闸帝么舱搬洋寅蘑苞售惜诊雕腿返粳痹摊球痰阅拷冰届颗粱螺烛步密罗函数与函数模板函数与函数模板,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报