c语言的 解析一下运算过程呗

img

可以帮解析一下这个子函数的运算过程吗?有点看不懂,为什么运算结果a和b都会等于5的呀

打印5,5
a的值在main中没有变,b的值被赋了指针地址值,为5

swap(int x,int*y)
两个参数前一个是值传递
值传递不会改变值
后一个是地址传递可以改变原变量的值

a=5,b=10
swap(a,&b) a是值传递,b是地址传递,可知a的值一定不变
swap函数内:(调用时传参a和&b,所以x等价于a,y等价于b)
t=x=a=5,
x=*y=*b=10;
*y=t=5
由于b是地址传递,所以会带出值,所以b=y=5,a是值传递,数据不变,所以a还是5
最终结果a=b=5