Swap函数实现交换两个整数的值,易错总结 |
您所在的位置:网站首页 › javaswap函数交换失败 › Swap函数实现交换两个整数的值,易错总结 |
文章目录
一、正确做法二、只交换了形参三、只是交换了形参的指向四、小心野指针五、总结
一、正确做法
首先正确的交换方式是如下代码: void Swap(int *p1,int *p2) { int tmp = *p1; *p1 = *p2; *p2 = tmp; }用指针直接访问存储两个整数的内存空间,实现交换,下面归纳一下易错的地方 二、只交换了形参 void Swap_err(int a,int b) { int tmp = a; a = b; b = tmp; }这种情况,只是交换了Swap函数里a,b的值(即只交换了形参的值),而主函数里的a,b是没有发生改变的,交换失败 三、只是交换了形参的指向 void Swap_err2(int *p1,int *p2) { int *tmp = p1; p1 = p2; p2 = tmp; }这种情况看似形参传了引用,但函数体交换的是形参的指向,如下图所示 这种情况程序会崩溃 交换成功的必要条件:1.传指针;2.解引用 一个函数的改变要想影响另一个函数,必须满足两个条件:1.传指针;2.解引用 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |