话不多说,先上图片:


1形参和实参的简单传递问题_main函数

2形参和实参的简单传递问题_main函数_023形参和实参的简单传递问题_main函数_03

众所周知,图2是一个经典的形参和实参传递问题,对于函数swap而言,在main函数里面,我们将a,b两个值复制进入到栈里面,而不是直接使用a,b两个值进行操作,在栈里面的交换,只交换了两个形参的值,而对实参没有任何影响,如图示:形参和实参的简单传递问题_形参和实参_04

而对于图1,我们在函数里面交换地址会如何呢,结果和图1一样,只是将a,b的地址复制到栈里面去了,a和b的实际地址并没有发生任何改变,所以对应的a,b的值并没有发生任何改变。

再看图3,我们将a,b的地址复制到栈里面,而对应这个地址的值只有相应的a,b,所以在函数里面改变的是对应地址下的值,所以做到了数值的交换。