using namespace std;
void swp(int*a, int*b)
{
int *temp;
temp = a;
a = b;
b = temp;
}
void swp2(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
void swp3(int **a, int **b)
{
int *temp;
temp = *a;
*a = *b;
*b = temp;
}
void main(void)
{
int a=3,b=4;
int *ap,*bp;
int **ap1,**bp1;
ap = &a;
bp = &b;
ap1 = ≈
bp1 = &bp;
cout<<" *ap = "<<*ap<<" *bp = "<<*bp<<endl;
//swp(ap,bp);
//cout<<"swp "<< "*ap = "<<*ap<<" *bp = "<<*bp<<endl;
//swp2(ap,bp);
//cout<<"swp2 "<< "*ap = "<<*ap<<" *bp = "<<*bp<<endl;
swp3(ap1,bp1);
cout<<"swp3 "<< "**ap1 = "<<**ap1<<" **bp1 = "<<**bp1<<endl;
getchar();
}
- swp 不能交换两个数字,指针作为参数传递是,只是复制了一个值给形参,也就是说 使用swp(ap,bp)时,调用void
swp(int*a, int*b),其实是给指针a和指针b分别赋值a = ap; b = bp; 函数里面虽然交换了a 和 b
的值,也就是,a= bp; b = ap; 但是不影响 ap和bp,swp函数调用完,a和b 就释放了。ap 和 bp
还是指向原来的位置。 - swp3 用指针的指针做参数就不同了。
- 引用就不说了