收藏 分销(赏)

函数定义和调用的格式.ppt

上传人:xrp****65 文档编号:14027037 上传时间:2026-06-09 格式:PPT 页数:15 大小:53KB 下载积分:10 金币
下载 相关
函数定义和调用的格式.ppt_第1页
第1页 / 共15页
函数定义和调用的格式.ppt_第2页
第2页 / 共15页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第五章,C+,函数,函数定义和调用的格式,函数原形和头文件的作用,参数传递机制、函数重载,函数和变量的作用域,函数模板的设计方法,函数的定义,函数定义的格式,类型修饰符 函数名,(,形式参数表,),函数体,例:,double sqare(double n)return n*n;,参数,有参函数,各,参数用逗号分隔,与变量说明方法相同,无参函数,“形式参数表”可以为空,也可用,void,返回值,有返回值函数,1,、“类型修饰符”说明返回值的类型,为,Int,时,可以 省略,但不提倡,2,、“函数体”中最后一语句应为:,Return,表达式,;,3,、函数的返回值应与“类型修饰符”的说明一致,兼容的转换,不兼容的发生编译错误,无返回值函数,1,、“类型修饰符”必须为,Void,2,、“,函数体”中最后语句可以为:,Return;,也可不用,函数调用,函数调用格式,函数名,(,实在参数表,),实 参,与形参在数量、类型、次序上必须一致类型不一致时,兼容的转换,不兼容的发生编译错误,调用方法,作为表达式,1,、必须是有返回值的函数,2,、例:,result=sqare(5.0);,作为语句,1,、可以没有返回值,有,也被舍弃不用,2,、调用语句后加语句结束符构成表达式语句,3,、例:,Hi();sqare(5.0);,函数的递归调用,函数直接或间接地调用自身,函数原形与头文件,三种,格式,函数定义,类型修饰符 函数名,(,形式参数表,),函数体,函数原形,类型修饰符 函数名,(,形式参数表,);,函数调用,函数名,(,实在参数表,),一项,原则:在调用函数时,函数必须经过定义或原形说明,头,文件,将,C+,应用程序中各个程序文件里面要调用的用户自定义函数的原形说明放在一个头文件中,在有函数调用的程序文件中包含这个头文件即可,多,文件应用系统,第一个文件:描述函数的头文件,第二个文件:定义函数的程序文件,第三个文件:调用函数的主程序文件,参数传递,传值,把实参,表达式的值作为一个副本传递给形参变量,函数调用不会改变实参的值,一维数组参数,1,、在定义一个一维数组参数时,可以不限定数组元素的个数,2,、在调用具有数组参数的函数时,须以单独的数组名为实在参数,二维,数组参数,1,、在定义一个二,(,或三,),维数组参数时,其第一维可以不限定,但其余各维都须限定,2,、在调用具有数组参数的函数时,须以单独的数组名为实在参数,3,、仅用行下标引用一个二维数组时,实际上引用的是相应行的那个一维数组,说明,:对于数组参数,形参数组是对应的实参数组的代表,而不是它的副本,因此,对形参数组的任何改变实际上就是对实参数组的改变,可选参数,在说明一个函数时,可以为形式参数表中的最后若干个参数设定默认值,从而把这些参数设定为可选参数,在调用这个函数时,如果没有给出对应于可选参数的实参,系统就自动以设定的默认值作为实参传递给这个函数,在调用具有可选参数的函数时,被省略的只能是最后的连续的若干个可选参数,(,即不能间隔省略,),可选参数的说明格式如下:,类型修饰符 变量名,=,默认值,(,常量表达式,),可选参数应该在函数原形中说明,内联,函数,内联函数,:在一般函数定义前面加上保留字,inline,,,该函数即被说明为内联函数,例:,inline int add2(int n)return n+2;,内联展开,:程序执行时,,C+,有可能直接调用函数体代码来替代对函数的调用,函数说明,:内联函数的说明也应放置在头文件中,函数重载与名字混成,函数重载,:允许定义同名的函数,但重载的函数必须在参数的数量上或类型上与其他同名函数有所不同,重载函数的调用,:如果调用时所用的参数与所定义的各种情况均不相同,则编译系统会选择与其兼容的最相似的那个函数,并完成必要的类型转换,如果找不到兼容的函数,则产生编译错误,名字混成,:编译系统在处理重载函数时会形成不同的内部名称,这种方法称为名字混成,在重载函数时必须保证在逐个去掉可选参数后,仍然在参数个数上或类型上与同名函数有所不同,函数的作用域,全局作用域,:不但在定义函数的文件中可以调用,而且在同一应用系统的其他程序文件中也可调用,文件作用域,:说明为,static,的函数只能被同一文件中的函数调用,例:,static long add(long a,long b)return a+b;,全局变量,全局变量,:定义于函数外部的变量称为全局变量,静态生存期,:全局变量在应用程序运行的整个期间都有效,如果在定义时未初始化,则自动初始化为,0,文件作用域,:全局变量定义时使用,static,修饰,则只允许同一文件中的函数访问该变量,跨文件作用域,:全局变量定义时未使用,static,修饰,则还允许同一系统的其他程序文件中的函数访问该变量,外部说明,:,extern int,a,应用场合,跨,文件作用域的全局变量被其他程序文件中的函数访问,变量的声明在函数声明之后,称之为“变量的原形”,局部变量,局部变量,:定义于函数内部的变量,块作用域,:局部变量只允许定义该变量的块中的语句访问,“块”一般指复合语句,复合语句中位于变量定义之前的语句也不能访问该变量,局部变量的存储类型,:,自动变量,:其生存期从变量定义开始,到所在块运行结束时为止,用,auto,修饰或省略之,寄存器变量,:也是自动变量的一种,但它是存储于寄存器中的,只有适合于单个寄存器存放的变量才可声明为寄存器变量,用,register,修饰,静态变量,:用,static,修饰的局部变量具有静态生存期,存在于应用程序的整个运行期间,函数模板,(,一,),函数模板:一系列相关函数的模型或样板,这些函数的原代码除了因所针对的数据类型不同而有所差异外,其基本结构相同。,定义格式:,template,函数定义 例:,template /T,被称之为虚拟类型,T Max(T x,T y),return(xy?x:y);,函数模板的实例化:编译系统根据每次调用的实在参数的情况生成适当的调用代码,并生成相应版本的函数定义,例:,couty?x:y);,函数模板,(,二,),函数模板的强制实例化:在函数调用格式中插入模板的实参表,例:,cout(3,5.0);,将,生成如下实例:,int Max(int x,int y)return(xy?x:y;),/,5.0,为,double,型,强制转换为,int,型,若与模板的某个实例原形相同的函数定义已经存在,则函数定义优先,函数模板的形参表中可以有多个参数,例:,templateT1 Max(T1 x,T2 y)return x(T1)y?x:,(T1)y;,/,只要可以比较大小,可以实现类型转换,函数模板,(,三,),模板函数:利用函数模板实现的函数,函数模板要放置于头文件中,常规参数:在函数模板中使用一般的类型修饰符说明的参数,调用具有常规参数的模板函数必须强制实例化,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服