为什么调用swap时实参变量前不加'*'?

img


不能通过执行调用函数改变实参指针变量的值,但可改变实参指针变量指向,所以为什么不加*?

swap函数的形参是指针,所以实参传入的肯定是指针。*是取值,如果仅仅把指针里的值传到swap里,就无法交换实参的值了。举个例子,如果加*,就是把作业给他抄一份过去传入函数,他自己再怎么折腾,都影响不了被抄的作业本。而直接把指针传递过去,就是把作业本直接借给函数,函数里可以修改作业本上的内容。
q1,q2,q3是指针,相当于三个盒子,三个空间的地址,你要把空间的地址给swap,它才能修改里面放什么东西;如果仅仅把盒子,空间里的东西传递给swap,它是没办法修改盒子和空间里放什么内容的。