主题:请教
a 与b的指针不是在函数中已近改变了嘛?为什么函数调用结束后,a b 的地址又换回来了?
代码如下:
#include<iostream.h>
void swap(int *a,int *b)
{
int *c=0;
cout<<"swap函数中,交换前,a:"<<a<<"\t"<<"b:"<<b<<endl;
cout<<"a:"<<a<<"\t"<<"b:"<<b<<"\t"<<"c:"<<c<<endl;
c=a;
cout<<"a:"<<a<<"\t"<<"b:"<<b<<"\t"<<"c:"<<c<<endl;
a=b;
cout<<"a:"<<a<<"\t"<<"b:"<<b<<"\t"<<"c:"<<c<<endl;
b=c;
cout<<"a:"<<a<<"\t"<<"b:"<<b<<"\t"<<"c:"<<c<<endl;
cout<<"swap函数中,交换后,a:"<<a<<"b:"<<b<<endl;
}
int main()
{
int a=3,b=4;
cout<<"a的地址:"<<&a<<" b的地址:"<<&b<<endl;
cout<<"主程序中,交换前,a:"<<a<<"b:"<<b<<endl;
swap(&a,&b);
cout<<"a的地址:"<<&a<<" b的地址:"<<&b<<endl;
cout<<"主程序中,交换后,a:"<<a<<"b:"<<b<<endl;
return 0;
}
代码如下:
#include<iostream.h>
void swap(int *a,int *b)
{
int *c=0;
cout<<"swap函数中,交换前,a:"<<a<<"\t"<<"b:"<<b<<endl;
cout<<"a:"<<a<<"\t"<<"b:"<<b<<"\t"<<"c:"<<c<<endl;
c=a;
cout<<"a:"<<a<<"\t"<<"b:"<<b<<"\t"<<"c:"<<c<<endl;
a=b;
cout<<"a:"<<a<<"\t"<<"b:"<<b<<"\t"<<"c:"<<c<<endl;
b=c;
cout<<"a:"<<a<<"\t"<<"b:"<<b<<"\t"<<"c:"<<c<<endl;
cout<<"swap函数中,交换后,a:"<<a<<"b:"<<b<<endl;
}
int main()
{
int a=3,b=4;
cout<<"a的地址:"<<&a<<" b的地址:"<<&b<<endl;
cout<<"主程序中,交换前,a:"<<a<<"b:"<<b<<endl;
swap(&a,&b);
cout<<"a的地址:"<<&a<<" b的地址:"<<&b<<endl;
cout<<"主程序中,交换后,a:"<<a<<"b:"<<b<<endl;
return 0;
}