例10.3② main #include <stdio.h> (指针变量做参数) ptl &a void swap2( int *pl, int*p2) int *temp; a 9 *temp pI=*p2 *p2=*temp: ptz &b 说明:这种方法可以实现将a,b的值互 b5 换,但是可能会破坏系统的正常工作 状态,因为tmp是一个指针变量但 是 在函数中并没有给temp个确定的 地 址,这样它所指向的内存单元是不可 预见的,而对*temp的赋值可能带来
例 10. 3 ② #include <stdio.h> (指针变量做参数) void swap2( int *p1, int *p2) { int *temp; *temp = *p1 ; *p1 = *p2; *p2 = *temp; } 说明: 这种方法可以实现将a,b的值互 换,但是可能会破坏系统的正常工作 状态,因为temp是一个指针变量但 是 在函数中并没有给temp一个确定的 地 址,这样它所指向的内存单元是不可 预见的,而对*temp的赋值可能带来 危害 a b pt1 pt2 main &a &b p1 p2 temp &b &a swap2 ? 随机值 5 5 59 9
例10.3③ man #include <stdio.h> (指针变量做参数) ptl &a void swap( int * pl, int *p2) t int*p; a 5 p=pl; p2; p2/&b p2=p;/交换的是指针变 量的值* b 9 这种方法不能实现将a,b的值互换, 为只交换形参pl和p2的值,使它 的指向发生改变,但是main函数中 的a和b的值并没有进行交换所以输 出为a=5,b=9
例 10. 3 ③ #include <stdio.h> (指针变量做参数) void swap3( int *p1, int *p2) { int *p; p = p1 ; p1 = p2; p2 = p; /*交换的是指针变 量的值*/ } p1 p2 &a p &a &b 这种方法不能实现将a,b的值互换, 因为只交换形参p1和p2的值, 使它 们 的指向发生改变, 但是main函数中 的a和b的值并没有进行交换所以输 出为: a=5, b=9 a 5 b 9 pt1 &a pt2 &b main &b &a swap3