解释如下:
函数在传参的时候,会进行一次复制。
在main函数中调用swap(int x,int y)函数时,会把a和b的值传入swap函数,
这时候,编译器会进行一次拷贝(先定义变量x和y,然后让x=a,y=b)
因为是临时变量,x和a的地址是不同的,y和b的地址也是不同的,
在swap函数中操作的是x和y,x和y是a和b的拷贝,跟a和b是独立的,所以对a和b没有影响。
----------------------------------------分割线----------------------------------------------------
而对于swap(int* x,int *y)函数来说,传入的是a和b的地址,
swap函数仍然会进行一次复制,x = &a,y=&b,这时候x和y分别是a和b的地址,
也就是说,在swap函数中操作的是a和b的内存,所以虽然在传参时进行了一次复制,
但是x指向了a的内存,y指向了b的内存,所以,在swap中对x和y的内存数据进行操作的时候,
会对a和b的值产生影响。
实参不能实现参数值的修改,函数内部实际是对参数进行了复制,重新命名了同名的临时变量。和外部传入参数并不是同一个实例,所以修改函数内变量值是没用的