首页 理论教育学会在C++程序中定义和调用函数

学会在C++程序中定义和调用函数

【摘要】:函数的使用就是调用函数的过程。在函数定义和调用中,把传递给函数的值称为实际参数,把函数内部用来接收传递给函数的值的变量称为形式参数。为此,必须将函数定义在前或者在调用前进行“函数的声明”。

在使用函数时,要先对函数进行定义,确定它要实现的功能。函数的使用就是调用函数的过程。在函数定义和调用中,把传递给函数的值称为实际参数,把函数内部用来接收传递给函数的值的变量称为形式参数。

1.函数定义

C++中每一个函数的定义都是由4个部分组成的,即函数类型、函数名、函数参数表和函数体。其形式如下:

函数类型 函数名(函数参数表)

其中,“函数类型”决定了函数所需要的返回值类型,它可以是函数或数组之外的任何有效的C++数据类型,包括复合数据类型等。如果不需要函数有返回值(只是一个过程调用),则只要定义函数的类型为void即可。“函数名”是一个有效的C++标识符,其后面必须跟一对圆括号“()”,以区别于变量名及其他用户定义的标识名。

“函数参数表”写在括号中,各参数(函数定义中的参数称为形式参数或形参)以逗号隔开,每个参数由参数类型和参数名表示。“函数参数表”中的参数个数可以为0,但圆括号不能省略。

“函数体”由在一对花括号中的若干条语句组成,用于实现这个函数执行的功能。C++不允许在一个函数体中再定义另一个函数。

下面是一个函数的例子,它返回两个整数中较大者。函数有两个形参x和y,返回值类型为int:

函数定义中的形参是指调用此函数所需要的参数个数和类型。一般地,仅当函数被调用时,系统才会给形参分配内存单元,而调用结束后,形参所占用的内存单元又被释放。

在函数定义中,return关键字负责将后面的值作为函数的返回值,并将程序控制返回到调用此函数的位置处。若函数类型为void,函数体中就不需要return语句或者return的后面什么也没有。

注意:一旦执行return语句,函数体内return后面的语句就不再执行。

2.函数的声明

定义一个函数就是为了以后的调用,但如果函数定义在后而调用在前,就会产生编译错误。为此,必须将函数定义在前或者在调用前进行“函数的声明”。函数声明消除了函数定义的位置影响。也就是说,不管函数是在何处定义的,只要在调用前进行函数的声明,就可保证函数调用的合法性。虽然函数不一定在程序的开始就声明,但为了提高程序的可读性和保证简洁的程序结构,最好将主函数main放在程序的开头,而将函数声明放在主函数main之前。

声明一个函数的格式如下:

函数类型函数名(函数参数表);

其中,“函数类型”指出函数返回值的类型;“函数名”指出被声明的函数的名字;“函数参数表”声明该函数的形参,如同函数定义一样,“函数参数表”中的参数个数可以为0,但圆括号不能省略。

在声明函数时,“函数参数表”有两种方式:一种与函数定义时的“函数参数表”一样,给出形参名和对应的数据类型的列表;另一种方式是只给出形参的数据类型的列表。例如,对于前面定义的max函数,以下两个声明语句是等同的:(www.chuimin.cn)

intmax(int x,int y);

intmax(int,int);

注意:在声明函数时,不要忘记末尾的分号“;”。

3.函数的调用

调用函数时,在函数名后跟参数(调用函数时的参数称为实际参数或实参),参数用逗号隔开。调用时,将实参中的实参值逐个代入形参,这一过程称为向函数传递参数。函数调用的一般形式如下:

函数名(实际参数表);

其中,“实际参数表”与函数定义或声明时的“函数参数表”相对应,它是实际调用函数时所给定的常量、变量或表达式,且必须有确定的值。

例如:

int a=2,b=10,c;

c=max(a,b);

int c=max(2,10);

都是合法的调用。

注意:实参与形参的个数应相等、类型应一致,且按顺序一一对应传递数据。

在C++中,调用一个函数的方式可以有很多,例如: