
*temp=0
改成
int
*temp或者如信握qiufozhell所说直接用变量temp,不用指针
你的int swap(int,int) 函数是传值,这个在实参代入函数的镇行时候御盯哗会拷贝一个临时副本给形参,内存地址是不一样的,不是用你本身实参在内存地址中实际存在的值,所以你swap函数是对临时副本的值做值交换,不会影响实际的a,b值。这里想交换a,b值的话,只要传递的是a,b所在实际内存地址的值就行了,可以有两种方法:传引用(直接是a,b做处理),传指针(传入a,b实际地址)传指针:
#include <iostream>
int swap(int *,int *) //函数声明要改则坦
int main()
{
int a=1,b=15
std::cout<<a<<" "<<b<<std::endl
swap(&a,&b)//这边使用注意,传入的是a,b地址
std::cout<<a<<" "<<b<<std::endl
return 0
}
int swap(int *x,int *y) //函数定义要改
{
int z
z=*x
*x=*y
*y=z
return 0
}
传引用:
#include <iostream>
int swap(int &,int &) //函数声明要改,其他不用改
int main()
{
int a=1,b=15
std::cout<<a<<" "<<b<<std::endl
swap(a,b)
std::cout<<a<<" "<<b<<std::endl
return 0
}
int swap(int &x,int &y) //函数声明要改,其他不用改
{
int z
z=x
x=y
y=z
return 0
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)