你第一个代码是传值,
传值时,通过调用swap()无法改变主函数中a,b的值,因为传给swap()的a,b参数实际上是主函数中a,b变量的一份拷贝,
swap()的a,b参数和主函数中a,b的地址并不一样,交换的只是swap()的a,b参数的值,当调用完swap后,swap()的a,b参数所占的内存空间会被释放,所以主函数中a,b的值并没有被改变。
你第二个代码是用指针传址,
传址时,通过调用swap()可以改变主函数中a,b的值,因为此时传递的是a,b的地址,在swap()中改变*a,*b的值就相当于在改变主函数中a,b的值,因为他们的地址是一样的,即使调用完swap后,它所占的内存空间会被释放,但主函数中a,b的值已被改变。
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
传递值和地址的区别。只传递值,函数内部的操作影响不了外部的变量,也就是说内部的a和外部的a拥有不同的地址。传递地址则是函数内部通过访问地址更新变量,此时外部相应的变量也会改变,因为地址是同一个地址。