交换两个变量的值
2023-04-18 14:22:51 时间
交换两个变量的值常用方法
首先应当明确,当调用函数进行变量值交换时,应采用传址调用的方法,具体区别如下:
传值调用
函数的形参和实参分别占有不同内存块,对形参的修改不会影响实参。
传址调用
· 传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。
· 这种传参方式可以让函数和函数外边的变量建立起真正的联系,所以函数内部可以直接操作函数外部的变量。
所以交换调用函数交换两个变量的值时,采用传址传参。
首先定义两个变量并赋值,调用函数Swap来实现交换变量的值
int a = 2;
int b = 8;
Swap(&a, &b);
下面用三种方法实现
1.定义临时变量法
void Swap(int *p1, int *p2)
{
int temp = 0;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
不足是用此方法会引入第三个变量
2.相加法
void Swap(int *p1,int *p2)
{
*p1 = *p1 + *p2;
*p2 = *p1 - *p2;
*p1 = *p1 - *p2;
}
当两个变量值较大时,用这个方法容易产生值溢出问题
3.异或法
void Swap(int * p1, int * p2)
{
*p1 = *p1 ^ *p2;
*p2 = *p1 ^ *p2;
*p1 = *p1 ^ *p2;
}
需要了解异或运算的原理:
x ^ x = 0
x ^ 0 = x
即任何数和本身异或值为0,任何数和0异或值为这个数本身。
相关文章
- 你的电脑适合升级 Window11 吗?
- 苹果 macOS Monterey 12 开发者预览版 Beta2 发布
- 来了!微软发布首个Windows 11 版本号22000.51
- 在 Linux 上用 dust 代替 du
- elasticsearch之search template
- elasticsearch之exists查询
- elasticsearch之单请求多查询
- elasticsearch查询之keyword字段的查询相关度评分控制
- install ta-lib in ubuntu
- win10和win11 wsl2配置,以及开发环境配置
- 朴素贝叶斯算法
- Linux日常
- elasticsearch高亮之词项向量
- elasticsearch算法之搜索模型(一)
- elasticsearch拼写纠错之Term Suggester
- 2022年是最烂的一年吗?我的2022年终总结
- elasticsearch之拼音搜索
- 管理订单状态,该上状态机吗?轻量级状态机COLA StateMachine保姆级入门教程
- elasticsearch之集成中文分词器
- node-sass各版本