1.
#include <iostream.h>
void swap(int *p1,int *p2)

...{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
void main()

...{
int a,b;
int *pointer1,*pointer2;
cin>>a>>b;
pointer1=&a;
pointer2=&b;
swap(pointer1,pointer2);
cout<<a<<" "<<b<<endl;
}
实参与形参进行替换的时候p1和pointer1都指向a,p2和pointer2都指向b,然后执行函数体使
*p1和*p2值互换,也就是使a和b的值互换.函数调用结束后p1和p2不复存在(被释放)实现了值的
交换.
2.
#include <iostream.h>
void swap(int *p1,int *p2)

...{
int *temp;
*temp=*p1;
*p1=*p2;
*p2=*temp;
}
void main()

...{
int a,b;
int *pointer1,*pointer2;
cin>>a>>b;
pointer1=&a;
pointer2=&b;
swap(pointer1,pointer2);
cout<<a<<" "<<b<<endl;
}
此交换函数中,*temp中并无确定的地址值,所以它的值是无法预料的.temp所指向的单元也是不
可预见的,应该将*temp的值赋值给一个整型变量,所以交换失败.
3.
#include <iostream.h>
void swap(int *p1,int *p2)

...{
int *temp;
temp=p1;
p1=p2;
p2=temp;
}
void main()

...{
int a,b;
int *pointer1,*pointer2;
cin>>a>>b;
pointer1=&a;
pointer2=&b;
swap(pointer1,pointer2);
cout<<a<<" "<<b<<endl;
}
此交换函数中,函数只是把参数的地址交换了,但参数地址所指向的值并没有交换,调用函数不
可能改变实参指针变量的值,但可以改变实参指针变量的值,如图:
