如何利用函数调用来使得我们的程序更加简洁、高效

时间:2022-09-04 阅读:825 评论:0 作者:zhushican

在了解什么是函数的基础之上,我们需要进一步学习,如何利用函数调用来使得我们的程序更加简洁、高效。那么,函数的参数与调用则是尤为重要的知识。

如何利用函数调用来使得我们的程序更加简洁、高效

函数的参数

在大多数情况下,函数是有参数的,这也就意味着,当需要利用函数完成一个功能时,我们需要给出完成该功能的必要条件。例如在例6-3中,求取两个整数的最大值,对于这一功能,我们必须给出这两个整数作为参数传递给max函数。

函数的参数分为两类:形式参数和实际参数。形式参数是指在定义函数时,函数名后面括号中的变量名称,而实际参数是指在函数调用的时候,函数名后括号中的变量名称。

函数的形参表由一些了用逗号分隔的参数类型和参数名组成,如果两个参数具有相同的类型,其类型必须重复声明,如:求出两个整数的最大数的函数的声明。

int max(int v1,int v2);      //max函数的声明

int max(int v1,v2);      //错误

参数表中不能出现同名的参数,类似的,函数的局部变量也不能使用与函数参数相同的变量名。

调用函数时,对于每一个实参,其类型都必须与对应的形参类型相同,或者可以被转换为盖形参的类型。例如,对于例6-1中具有两个int类型形参的gcd函数来说:

例6-4函数的参数匹配

int main ()

{

gcd(“hello”,”world”);        //错误,参数类型不匹配

gcd(985);                    //错误,参数个数不匹配

gcd(3.14, 1.55);         //正确,double类型常量可被转为int类型

gcd(5,4+7);              //正确

}

第一个调用时不合法的,因为字符串类型无法转变为整数类型;第二个调用也是不合法的,因为实参的个数必须与形参表相一致;第三个调用是合法的,当发生调用时,3.14将转为int类型,并将值传递给v1,1.55将转为int类型,并将值传递给v2;第四个调用也是合法的,实参可以是表达式

有关形参和实参的说明:

(1)在定义函数时指定的形参,在未出现函数调用时,它们并不占用内存中的存储空间,因此称之为形式参数或虚拟参数,表示它们并不是实际存在的数据。只有当发生函数调用时,函数的形参才被分配内存单元,以便接收从实参传来的数据。在函数调用结束后,形参所占的内存单元也被释放。

(2)实参可以是常量、变量、表达式,但要求表达式有确定的值。

(3)在定义函数时,必须在函数首部指定形参的类型。

(4)形参和实参的类型必须相一致或者能够相互转化。

(5)实参的值传递给形参的时候是单向传递,只由实参传递给形参,而不传回。即:在被调用函数中,对于形参值的改变,并不会影响到实参的值,这一点尤其要注意。

例6-5函数的参数传递

/*交换两个整数*/

#include<iostream.h>   

void exchange(int v1,int v2);        //max函数的声明

int main()

{

    int a=100,b=200;

    exchange(a,b);               //a, b中最大的数赋值给c

    cout<<a<<","<<b;

    return 0;

}

void exchange(int v1,int v2)

{

    int temp=v1;

    v1=v2;

    v2=temp;

    cout<<v1<<","<<v2<<endl;

}

程序运行结果:

200,100

100,200

在exchange函数中,交换了v1和v2的值,但对于main函数中a和b的值并没有影响,也就是说,实参到形参的值是单向传递的。

例6-6输入三个整数x,y,z,请把这三个数由小到大输出。

int sort(intx,inty,int z)

{

intt;

if (x>y)

{

t=x;

x=y;

y=t;

} /*交换x,y的值*/

if(x>z)

{

t=z;

z=x;

x=t;

}/*交换x,z的值*/

if(y>z)

{

t=y;

y=z;

z=t;

}/*交换z,y的值*/

cout<<"small to big:”<<x<<”,”<<y<<”,”<<z<<endl;

}


本文链接: http://www.zh-xm.com/post/144.html 转载请注明出处!

上一篇: 函数的类型
评论区 交流一下吧!

共有0条评论来说两句吧...

欢迎 发表评论: