谢谢前辈
这个书上说交换a和b得值?
为什么a和b会互换?
swap就是我说的情况,传参的时候就是传入的地址,比如
int *p=&a,*q=&b,
swap(p,q)
p、q就a,b的地址
交换值的时候,你看一下,都是对*p、*q进行赋值(*号就是取内容运算符)。
去掉*号的话,只是交换了一下形参的地址,就不能达到交换的目的了。。。
这里指针相当于一个中介。。。
实参其实是指针,并不是a,b变量,函数没有改变真正的实参(指针值)
追问也就是交换得是指针然后取得实参地址就是那个a和b然后用*p1和*p2改变地址
*p1和*p2不是形参吗?
追答你理解反了。。。输入的是指针,实参就是指针,没有改变实参,没有交换指针,是通过指针修改了指针下的内容。
传入的是指针。。。
指针值就是变量的地址,始终没有根本这个地址吧。
追问谢谢前辈,那前辈在这里*p1和p2是实参,那形参是谁?
追答你再想想,到底函数的实参是什么,不是a、b变量。。。
追问实参是*pointer1和2然后形参是*p1和2?
追答实参和形参除了数值相同以外,完全是两个东西,调用函数的时候,会再形成一块内存空间,把实参的数值赋值到这个空间里,以便在函数内部使用。
追问奥,这样啊,谢谢前辈啊,感觉指针这里好难
追答多思考,到一定程度就会顿悟的。。。
追问嗯,谢谢前辈。我老是分不清实参,按书上定义卡,就给a,b当实参了……
追答书上这部分大多不够严谨,主要是编辑的水平问题。。。
本回答被提问者采纳