请问一下为什么没有指针就无法完成交换了呢

请问一下为什么这个左边有指针就可以完成交换,右边没有就无法完成,这跟冒泡排序法有什么不同吗。谢谢

img

先看右边
swap(int x ,int y)
当调用的时候,比如这样写swap(a,b)
那么其实是执行了
x=a;
y=b;
那么后续你交换x和y的值,并不会改变a和b
如果是指针,那么指向的是a和b的地址,修改的就是a和b的值了

调用函数右边是局部变量,相当于你传参数变量的副本,是一个copy值,函数调用结束,释放内存空间,就没了。
而左边是指针,是实际a,b的内存地址,*a就是你定义的a那个值。可以完成交换