赞
踩
目录
传值只是传对象的值,不传地址,所以实参改变不会影响原形参的值!
传引用是把对象所在的地址传过去(即传了整个对象),所以实参和形参指向同一地址,任何一方改变地址中的值,另一方的值也会改变!
传值是实参的值传递给形参;
传地址是传的实参指向的首地址;
传引用是传实参指向的对象.
注意:传地址和传引用有稍许差别,就是传的首地址不一定就是一个对象,有可能对象占的地址空间大,则这样就只能是指向一个首地址,并不能知道对象的长度(如指向的对象是一个数组对象,传地址就是指向了这个数组对象的首地址);而传引用可以表示指向这个完整的对象。
(触类旁通:指针和引用,应该和传地址和传引用一样,是有区别的。)
传值:类似于我把自己的文件复制一份传给你,你拿到的是复印件,这时候你对你手里的复印件进行编写或者修改等操作,都不会影响我手中原文件,这就是传值的含义,只是把对象的值复制一份给你,你对你手里的对象怎么操作无关于我的原对象。
传引用:相当于我把我手中的文件与你共享了一份,你和我都可以打开和编辑这同一份文件,这时候你如果对这个文件进行修改,那我看见的这份文件也是修改之后的!
- #include "pch.h"
- #include <iostream>
- using namespace std;
-
- void swap(int&, int&);//传引用
-
- int main()
- {
- int a = 5, b = 10;
- cout << "a=" << a << ",b=" << b << endl;//输出当前a,b的值
- swap(a, b); //调用swap函数
- cout << "after swap:a=" << a << ",b=" << b << endl;//输出调用swap之后的a,b值
- //return 0; //return语句用来结束循环,或返回一个函数的值。return 0 表示成功完成本函数。
- }
- void swap(int&x, int&y)//传引用:将参数a=5,b=10的引用传给x=5,y=10
- {
- int temp;
- temp = x;//将x=5传引用给temp,则temp=5
- x = y; //将y=10传引用给x,则x=10;
- y = temp; //将temp=5传引用给y,则y=5.
- }
- #include "pch.h"
- #include <iostream>
- using namespace std;
-
-
- void swap(int, int);//传值
-
- int main()
- {
- int a = 5, b = 10;
- cout << "a=" << a << ",b=" << b << endl;//输出当前a,b的值
- swap(a, b); //调用swap函数
- cout << "after swap:a=" << a << ",b=" << b << endl;//输出调用swap之后的a,b值
- //return 0; //return语句用来结束循环,或返回一个函数的值。return 0 表示成功完成本函数。
- }
- void swap(int x, int y)//传值:将参数a=5,b=10的值传给x=5,y=10
- {
- int temp;
- temp = x;//将x=5的值传给temp,则temp=5
- x = y; //将y=10的值传给x,则x=10;
- y = temp; //将temp=5的值传给y,则y=5.
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。