- 12
- 0
- 约1.4万字
- 约 7页
- 2018-02-26 发布于江苏
- 举报
【计算机】3.3 函数类型与应用方法
3.3 函数类型和应用方法
3.3.1 函数定义与调用
函数是程序内部为完成特定功能而构造的独立的程序块。每个函数都具有独立的功能,明确的界面,形成清晰的模块结构,与程序的其他部分分隔开来。
函数定义的语法结构如下:
store_type data_type name(type1 data1,type data2,…..,typen datan)
{
statements;
}
其中store_type是函数的存储类型,它是可省略的;data_type是函数的返回值类型;name是函数名,用来标识函数;小括号括起来的一组数据类型和参数构成了函数的参数表(形式参数),其中type1~typen是n个参数的变量名;被大括号括起来的一组语句statements是执行相应功能的函数体。C++规定,函数的定义不能嵌套,即一个函数的内部不能定义其他函数,每个函数都是相对独立的程序块。各函数定义的顺序是任意的,不影响程序运行时函数调用的顺序。
如:
inline double abs(double val)
{
return (val0?-val:val);
}
inline double max(double val1,double val2)
{
return (val1val2)?val1:val2);
}
一个程序内的函数,即使其作用域的重叠,也可以是同名的,但同名函数的参数表必须不能完全相同。在函数调用时,编译器会根据函数名及参数的类型及数目自动确定调用哪一个函数。函数必须先定义或说明后使用,否则会导致编译错误。在一个程序内,函数必须且只能定义一次,但可以被多次说明。函数说明时只需要包括函数的返回值类型、函数名和参数表,这三项组成了函数原型。例如上面列举的确良个函数的函数原型分别为
double abs(double);
double max(double,double);
调用函数的形式是在函数名后加一对小括号,小括号内包含有逗号分隔开的相应数目的参数(称为实参数)——常量或变量。在函数调用时,编译器将各个实参数有值分另代入形式参数中(称为参数传递),并利用这些值进行函数体所规定的计算或其他操作,产生一个特定的返回值(如果不是void类型的话),并将返回值返回给函数调用处。除了void类型外,需要返回值的函数,在其函数体中都应该包括后面带一个常量或变量的return语句,指明该函数的返回值。而void型函数则不需要带任何数据的return语句。
3.3.2 函数类型与参数传递
C++把函数返回值的数据类型规定为该函数的数据类型,其数据类型可以是预定义的、用户自定义的和派生类型(包括指针和引用类型等),但是数组和函数类型不能直接作为函数的返回类型。若要求返回函数返回一个数组或确定某一个可被执行的函数,这时可求助于指针,即返回指针类型。在默认情况下,函数的返回值类型为整型int。
为了终止函数的运行,将控制权交还给调用该函数的函数,可以使用return语句。Return语句有两种形式:
return;
return expression;
第一种形式用于void型函数,其作用是人为地终止当前函数的运行,返回调用它的函数,且不返回任何值。若无该语句,系统也会隐式地执行return语句,返回调用函数。
第二种形式的return语句需要指明函数返回值的表达式,用在需要返回值的函数中。其中expression可以是一个表达式,也可以是一个具有返回值的函数调用。如果一个函数实际返回值与函数定义时所说明的返回值类型不匹配,则系统在可能的情况下会使用隐式转换规则进行转换。如果不说明为void类型的函数中,示返回任何数值也不会导致编译失败,编译器只会给出警告。
在某些情况下,函数需要返回多个值,可以有三种处理方法:
(1)利用全局变量来实现函数多个计算结果的返回。其优点中比较简便,但是,其值的返回不直观,且破坏了函数界面明确与函数体内容相分离的要求。
(2)根据需要定义一个聚合型数据类型来容纳多个数值,将函数说明成返回该聚合数据类型。在这种情况下,可以令函数返回一个指向数组的指针或一个类的对象。该方法比较直观,且保持了函数界面的清晰,因而被广泛使用。
(3)将函数的参数定义成按址传递(指针或引用类型)而不是按值传递,利用这些按值传递的参数的改变来返回所需的结果。该方法仍然保持了函数界面的清晰,虽然值的返回不太直观,但其实现较为简单,因而被使用得最多。
大多数的函数需要一定数目的操作数,即函数参数。函数的参数在函数定义时用逗号进行分隔,放在函数名后的小括号中。既使不需要任何参数,函数定义时函数名后的小括号也是必需的。函数的参数表是函数之间进行通信的重要手段,它和函数的返回值一起,构成了函数的公共界面。函数的界面是函数之间进行通信的途径,只要保持函
您可能关注的文档
- 《意外险和健康险》基础知识及销售实务(PPT 53页).ppt
- 《整合乡土资源引导农村幼儿教师.doc
- 《日语口笔译》课程整体教学设计.doc
- 《桂花雨》教学课例.doc
- 《水轮机检修》--高技.doc
- 【doc】团体健康险直付理赔服务模式初探.doc
- 【PPT】-中国人寿保险公司健康险话术专题(48页)-保险话术.ppt
- 【安邦】车险人伤理赔实务手册.doc
- 【全国百强校首发】黑龙江省哈尔滨市第三中学2016届高三上学期第二次检测数学(文)试题.docx
- 【大学信息技术导论】10 信息化与信息技术.ppt
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
最近下载
- 2025年省考超大杯刷题-申论套卷四.pdf VIP
- 小学学校总务处的工作计划.pptx VIP
- 大学毕业论文__小型液压挖掘机的设计.doc VIP
- 食材配送人员配置与资质要求.docx VIP
- 2025年山东省济南市中考英语试卷试题真题(精校打印版).pdf VIP
- 一种能够在太阳光下快速固化的可剥离去污复合膜及制备方法.pdf VIP
- 骨科临床诊疗指南及操作规范(2025版).docx
- 2025-2026学年小学信息技术(信息科技)四年级下册浙教版(2023)教学设计合集.docx
- 沪科版九年级(上) 中考题同步试卷:22.5 二次函数的应用(18).doc VIP
- 中国的刺腹牙甲属、脊胸牙甲属和凹基牙甲属昆虫鞘翅目牙甲科牙甲族研究.pdf VIP
原创力文档

文档评论(0)