void swap_int(int*a,int*b) { int temp=*a; *a=*b; *b=temp; }
void swap_str_yinyong(int& a,int&b) { int temp=a; a=b; b=temp; }
void swap_int_zhizhen(int*a,int *b) { int*temp=a; a=b; b=temp; }
请教为什么第三个函数不可以实现两个变量值的交换呢??既然不能实现变量值得交换,那第三个函数的作用是什么呢??
第三个中a,b都是地址,不是指针所指的值,相当于把指针的地址交换了,但指针所指的值没有交换。
你的意思是a,b两个变量的地址进行了交换吗??
可是结果却不太对呀??
main函数里面运行:
int e=1;
int f=2;
cout<<"未调用swap_int_zhizhen时:"<<endl;
cout<<endl;
cout<<" "<<"&e="<<&e<<" "<<"&f="<<&f<<endl;
cout<<endl;
swap_int_zhizhen(&e,&f);
cout<<"调用swap_int_zhizhen后:"<<endl;
cout<<endl;
cout<<" "<<"&e="<<&e<<" "<<"&f="<<&f<<endl;
打印结果如下
求解释。。。。。。
@Jack-su: 搞错了。。。。。
第三个函数可以用吗,我这报错了
@模糊123: 第三个函数无法实现交换变量的功能
函数调用时,是把地址copy一份进行操作,函数一通过copy的地址对原来的数值进行了交换,函数三只把copy的地址进行了交换,并没有对原来的数值进行操作。
第三个是交换了形参的值(指针),但是实参的值并不改变,所以没有任何作用。
传指针是为了改变指针指向的变量的值,而对形参本身进行交换,不影响实参指针,实参指向的变量的值不会改变,接分。