关于swap(a,b)的思考

来源:6-20 引用

我是笨笨蛋

2020-04-08

图片描述
在main函数中声明int a,int b,然后调用swap(a,b),结果a,b的值并没有交换。是不是可以理解为main函数中a,b的存储区域在stack中,而swap函数的存储区域在全局区域,在main函数中调用swap(a,b)之后,全局区域内的a,b的值已经交换,但是由于在main函数中a,b只是int型变量,没有办法指向全局区域,所以在main函数中a,b的值并没有交换。而加上引用之后即void swap(int &a,int &b),就可以把全局区域的a,b指向stack中的a,b,进而在stack中a,b的值进行了交换

写回答

1回答

quickzhao

2020-04-08

不是这样的。这里int a, int b通过参数传递过来时会在栈区开辟两个变量的拷贝,而不是直接操控变量本身,除非传地址或引用,否则操作的变量只是自己的副本,不会对被传变量有影响。传引用就直接是操控变量本身,会有变化。

1
1
我是笨笨蛋
非常感谢!
2020-04-08
共1条回复

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3939 学习 · 1107 问题

查看课程