十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
你的错误在于定义了 tmp 指针,赋值之后 x 和 tmp 都指向a,
歙县ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!
然后 你 *x = *y, 会把 b的值赋值给a,此时虽然 tmp仍然指向a,但是a的值此时已经变成b的值了。a本身的值丢失了。
你需要修改一下 void swapab(int *x, int *y) 函数,如下
void swapab(int *x, int *y) {
int tmp = *x;
*x = *y;
*y = tmp;
}
运行swap函数时是将两个变量(a,b)复制到另外两个变量(x,y)空间中,再进行替换。
如果要实现你要求,可以换成指针
#includestdio.h#includeiostream.hvoid
swap(int*,
int*);main(){int
a
=
10,b
=
20;swap(a,
b);coutab"\n";return
0;}void
swap(int
*x,
int
*y){int
temp;temp
=
*x;*x
=
*y;*y
=
temp;
}
或
#includestdio.h#includeiostream.hvoid
swap(int
,int);main(){int
a
=
10,b
=
20;swap(a,
b);coutab"\n";return
0;}void
swap(int
x,int
y){int
temp;temp
=
x;x
=
y;y
=
temp;
}
//swap函数的形参为引用或指针才能实现址传递
1. main()
2. { int a,b;
3. scanf("%d%d", a,b);
4. swap(a,b); //此处修改
5. printf("a=%d,b=%d" ,a,b);
6. swap(int *p,int *q)
7. { int m;
8. m=*p;
9. *p=*q;
10. *q=m;
11. }
你的swap函数2参数, a b是地址格式 调用函数时候 参数格式要对 即为地址(a,b地址)
void fun (int a, b) //应该是(int* a, int* b)吧
{
int t;
/**********FOUND**********/
t=a; //要改为t=*a;
/**********FOUND**********/
a=b; //同理,*a=*b b=t;
/**********FOUND**********/ a=b; //这句误事,删掉就好
b=t; //不用我说了吧
}