在C++中,值传递和指针传递有什么不同啊?

来源:百度知道 编辑:UC知道 时间:2024/05/05 09:03:25

都会创建拷贝
只不过是如果想操作影响到参数,需要使用地址传递
我可以解释一下:

如 swap(int a,int b){/*交换就不写了*/}
实际上,参数会创建副本,随便起个名字
int _a= a, int _b = b;
所有的操作都是针对 _a, _b,并不会影响到a,b

如果写成 swap(int *a,int *b){/*交换就不写了*/}
实际上,参数会创建副本,随便起个名字
int*_a= a, int*_b = b;

_a指向的是a的地址,_b指向的是b的地址
所以对*_a *_b的操作,就是对 a,b地址内容的修改,就会影响到a,b

其实在c++中,引用更为方便
只要 swap(int &a, intb)
就能将参数改变传出来了,因为它不被创建副本

指针传递原值改变,值传递原值不变。

值传递不改变参数的值;
指针传递能改变参数的值~

值传递在传递参数的时候,是传的一个参数的拷贝。

而指针传递,传递的是参数的地址。而非参数的一份拷贝

值传递是单向的 只能传出值 而不能传回来
指针传递可以理解为“双向的” 但其实质是空间共享 共同使用同一个地址