函数总结

一、函数参数的传值

1.传值调用

例:交换两个整型变量的函数

void swap(int x,int y)

{

int temp;

temp=x;

x=y;

y=temp;

cout<<x<<" "<<y<<endl;

}

int main()

{

int a,b;

cin>>a>>b;

swap(a,b);

cout<<a<<" "<<b<<endl;

}

运行结果:

输入:2 3

输出:3 2

       2 3

调用函数结束后并未交换两个数,这是因为主函数调用swap函数时,系统建立形式参数x,y,把实参a,b值赋给x,y作为初始值。swap函数的操作对实参a,b无影响。返回主函数后,形参x,y的值被撤销,实际参数a,b的值并没有改变。这称为函数的传值调用。

函数的传值调用对实参无影响,较为安全,但在将实参赋给形参过程中相对后两种调用方式耗时较多,效率偏低

2.传指针调用

如何改进1-1中的swap函数,使它交换两个实参的值呢?

传指针调用就是一种方法

在此之前先先简要了解一下指针变量

指针变量是的内容是一个地址,它所指向的地址上存放的变量为目标变量

有人做过形象的比喻,如果说变量是商品,那么指针就相当于商品上的标签

声明: int *p;                    //声明一个指向int型的指针变量p,注意 * 的多义性

int m;

p=&m                           //&在此处为取地址符号,p获得m的地址值,即p指向m,m为目标变量

cout<<*p<<m<<endl;//*p 表示p指向的目标变量,即m;

了解这些之后,就可以对1-1中的swap函数进行调整

例1-1-改-1:

swap(int *x,int *y)

{

 int temp=*x;

*x=*y;

*y=temp;

}

int main()

{

int a,b;

cin>>a>>b;

swap(&a,&b);

cout<<a<<" "<<b<<endl;

}

输入:2 3;

输出:3 2;

由此可见,以传指针调用的的方式可以实现对实参的改动。

3.传引用调用

在此之前先简要了解一下引用的概念

int a,b;

cin>>a>>b;

int &ra=a;         //ra是a的别名,只能在a定义时初始化,此过程中实际上是ra获得了a的地址值

ra=b;                 //借用引用可以改变引用对象的值

cout<<a<<endl;//此时输入的值与b相等

由此可以使用另一种方式写swap函数

1-1改-2:

swap(int &x int &y)

{

int temp;

temp=x;

x=y;

y=temp;

}

int main()

{

int a,b;

cin>>a>>b;

swap(a,b);

cout<<a<<" "<<b<<endl;

}

输入:2 3;

输出:3 2;

传引用调用不需要像指针参数那样通过间接访问实参对象,特别适用于大对象参数的高效操作。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值