交换两个值得分析
来源:互联网 发布:qq透明皮肤软件下载 编辑:程序博客网 时间:2024/05/16 04:39
1、正确做法
void swap(int *x,int *y)
{
int temp = *x;
*x = *y;
*y = temp;
}
void swap(int &x,int &y)
{
int temp = x;
x = y;
y = temp;
}
2、典型的错误做法
- void swap(int *x,int *y)
{
int *temp = x;
x = y;
y = temp;
} - void swap(int x,int y)
{
int temp = x;
x = y;
y = temp;
}
分析:这里需要考虑的是函数中形参和实参的传递。
首先,如果形参是基本类型的对象,在调用到函数的时候,系统需要给形参申请空间,用实参去初始化形参。所以,此时,函数中 发生变化的是形参,不改变实参对象。
其次,如果形参是指针类型,先看一下下面的小程序
int n = 0, i = 42;
int *p = &n;
*p = 42; //此时,对象n的值发生变化,由0 变为42
缘由:指针p指向对象n,*p改变的是p所指向的对象的值,即修改*p,实际修改的是n的值,故两值交换的时候,使用指针形形参可以实现正常的交换
最后,如果形参是引用类型,引用是给一个对象另起一个名字,引用赋值的语句
int i = 0;
int &n = i; //n是对象i的别名,对n进行操作,实际上就是对i进行操作
则,函数中操作的形参是实参的别名,改变形参也就是改变实参,故使用引用形参可实现正常的值交换
0 0
- 交换两个值得分析
- 两个数交换值得实现
- 交换两个数值变量值得算法
- 不使用中间变量进行两个值得交换
- 分析交换两个整数的特殊写法
- 给定两个整形变量的值, 但是不允许建立临时文件将两个值得内容进行交换。
- 给定两个整形变量的值。将两个值得内容进行交换
- 不用第三个变量交换两个参数值得5种方法
- 两个数不通过中间变量交换值的原理分析!
- 用异或交换两个变量的分析
- 用异或来交换两个变量效率分析
- c语言不用临时变量交换两个数程序分析
- 不用变量交换两个int变量的值的分析
- 交换两个int类型数值(总结分析,理解记忆)
- 交换两个变量的(六种)方法分析
- java分析可不可以调用方法交换两个数据(初级)
- 9.1 结合例9.6分析以下两个程序能否交换
- 交换值得几中方法
- UML实践详细经典教程----用例图、顺序图、状态图、类图、包图、协作图
- Android 通知栏消息
- Hadooper-Map/Reduce编程模型实现海量数据处理—数字求和
- c语言内存分配
- 泛型和容器(2)——List和迭代器
- 交换两个值得分析
- 桥接模式
- 浙大 pat Basic Level 1003
- IOCP模型总结
- 《计算机文化基础》
- Eclipse使用技巧:Eclipse开发web项目的文件编码设置
- System Center 2012 - Orchestrator 安装集成包
- 泛型与容器(3)——Set和Map
- 推荐一个实用工具wampserver