清华大学出版社 TSINGHUA UNIVERSITY PRESS (a=9,B=5)
(a=9,B=5)
清华大学出版社 TSINGHUA UNIVERSITY PRESS p1 8 a pointer pointer_1 pointer_1 pointer_1 &a a a &a 9 pointer 2 b pointer 2 & b 9 & b b b 5 pointer_2 pointer_ 2 b b 图10.9
图10.9
清华大学出版社 TSINGHUA UNIVERSITY PRESS 请注意交换*p1和*p2的值是如何实现的。如果写成 以下这样就有问题了: Swap(int pl, int*p2) lint temp; temp=*pl;/此语句有问题* pl=*p2 p2=*temp; pl就是a,是整型变量。而*temp是指针变量temp所 指向的变量。但temp中并无确定的地址值,它的 值是不可预见的。temp所指向的单元也是不可
请注意交换*p1和*p2的值是如何实现的。如果写成 以下这样就有问题了: Swap(int *p1,int *p2) {int temp; *temp=*p1; /*此语句有问题*/ p1=*p2; p2=*temp; } p1就是a,是整型变量。而*temp是指针变量temp所 指向的变量。但temp中并无确定的地址值,它的 值是不可预见的。*temp所指向的单元也是不可
清华大学出版社 TSINGHUA UNIVERSITY PRESS 预见的。因此,对*temp赋值可能会破坏系统的 正常工作状况。应该将少p1的值赋给一个整型变量 如程序所示那样,用整型变量temp作为临时辅助 变量实现*p1和*p2的交换。 注意:本例采取的方法是:交换a和B的值,而p1和 p2的值不变。这恰和例10.2相反。 可以看到,在执行Swap函数后,变量a和B的值改变 了。请仔细分析,这个改变是怎么实现的。这个 改变不是通过将形参值传回实参来实现的。请读 者考虑一下能否通过下面的函数实现a和B互换
预见的。因此,对*temp赋值可能会破坏系统的 正常工作状况。应该将*p1的值赋给一个整型变量, 如程序所示那样,用整型变量temp作为临时辅助 变量实现*p1和*p2的交换。 注意: 本例采取的方法是:交换a和B的值,而p1和 p2的值不变。这恰和例10.2相反。 可以看到,在执行Swap函数后,变量a和B的值改变 了。请仔细分析,这个改变是怎么实现的。这个 改变不是通过将形参值传回实参来实现的。请读 者考虑一下能否通过下面的函数实现a和B互换
清华大学出版社 TSINGHUA UNIVERSITY PRESS Swap(int x, int y) fint temp temp=x; X-y, y=temp; 如果在main函数中用“Swap(a,B);”调用Swap函数, 会有什么结果呢?如图10.10所示。在函数调用时, a的值传送给x,B的值传送给y执行完Swap函数 后,x和y的值是互换了,但main函数中的a和B并 未互换。也就是说由于“单向传送”的“值传递” 方式,形参值的改变无法传给实参
Swap(int x,int y) {int temp; temp=x; x=y; y=temp; } 如果在main函数中用“Swap(a,B);”调用Swap函数, 会有什么结果呢?如图10.10所示。在函数调用时, a的值传送给x,B的值传送给y。执行完Swap函数 后,x和y的值是互换了,但main函数中的a和B并 未互换。也就是说由于“单向传送”的“值传递” 方式,形参值的改变无法传给实参