16行放在主函数main中,swap(a,b)无法实现,需要用(int &x,int &y) 来实现,通过引用来传递参数(即x是a的别名,y是b的别名),此时,x并未申请新的内存空间,只是引用,实际与a共用一个内存;y也同理。
见下图第3行:
--------------------------------------------------------------------------------------------------------------------------------
当图1的16行写在swap函数里,可以直接成功实现值的交换。
但是实际上a,b的值保持1,5不变,输出的是swap函数中的x,y的值,他们占的内存不一样。
总之,C++中,主调用函数中定义的实际参数变量在被调用函数中不可以直接访问,因为被调用函数不是实际参数变量的作用域引用参数使得实际参数变量作用域”扩大“到原先无法进入的被调用函数中。