【计算机】3.3 函数类型与应用方法.docVIP

  • 12
  • 0
  • 约1.4万字
  • 约 7页
  • 2018-02-26 发布于江苏
  • 举报

【计算机】3.3 函数类型与应用方法.doc

【计算机】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)将函数的参数定义成按址传递(指针或引用类型)而不是按值传递,利用这些按值传递的参数的改变来返回所需的结果。该方法仍然保持了函数界面的清晰,虽然值的返回不太直观,但其实现较为简单,因而被使用得最多。 大多数的函数需要一定数目的操作数,即函数参数。函数的参数在函数定义时用逗号进行分隔,放在函数名后的小括号中。既使不需要任何参数,函数定义时函数名后的小括号也是必需的。函数的参数表是函数之间进行通信的重要手段,它和函数的返回值一起,构成了函数的公共界面。函数的界面是函数之间进行通信的途径,只要保持函

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档