C++面向对象——第一次作业

一、课题

函数参数传递的三种方式

二教学目的

理解并能充分运用三种函数参数传递方式

三.教学过程

函数参数传递有:值传递、地址传递(指针传递)、引用传递

定义

1.值传递

仅仅是把实参的值传递给形参,之后形参的值无论如何变化都与实参无关

2.地址传递

将实参的地址传递给形参,形参从而指向实参的地址,在形参发生改变时,相当于指向实参地址中的值发生改变

3.引用传递

形参相当于直接引用了实参,并不是简单的把实参的值赋值给形参,形参的变化相当于实参在变化

实验说明

1.值传递

 void swap1(int p, int q)
 {
         int temp;
         temp = p;
         p = q;
         q = temp;
         cout << p << " " << q << endl;
 }
 int main()
 {
         int a = 1, b = 2;
         swap1(a, b);
         //swap2(&a,&b);
             //swap3(a,b);
             cout << a << "  " << b << endl;
         return 0;
 }

1784287-20190915160429077-17495315.png

由此,我们可以看见其实形参p,q的值是交换了的,但是最终输出的a,b值并没有交换。因为值传递是仅仅传值,实参a,b不受影响。

2.指针传递

void swap2(int *p, int *q)
 {
         int temp;
         temp = *p;
         * p = *q;
        * q = temp;
 }
 int main()
 {
         int a = 1, b = 2;
         //swap1(a, b);
         swap2(&a,&b);
             //swap3(a,b);
             cout << a << "  " << b << endl;
         return 0;
 }

1784287-20190915161145574-1615711852.png

a,b的值实现了交换,在这个过程中,相当于将a,b的地址赋给p,q,之后交换地址中的值,从而a,b所在地址中的值也跟着变。

3.引用传递

void swap3(int &p, int &q)
 {
         int temp;
         temp = p;
         p = q;
         q = temp;
 }
int main()
 {
         int a = 1, b = 2;
         //swap1(a, b);
         //swap2(&a,&b);
             swap3(a,b);
             cout << a << "  " << b << endl;
         return 0;
 }

1784287-20190915162402486-611398936.png

a,b的值实现了交换,这儿相当于直接引用了实参,即形参不再是传递实参的值,而是形参变成了实参。当然p,q的交换就是a,b的交换。

转载于:https://www.cnblogs.com/xiaonannanbuchengxian/p/11522812.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值