数值交换问题
2014-03-29 00:00
197 查看
摘要: Java和c++中数值交换是有区别的
在c++中存在指针和引用的概念,是对地址进行操作。但是在Java中,对于基本数据类型作为形参,则只能是值传递;而对象只能传引用
故在c++中可以很容易的将数据交换写为一个函数,并在其他函数中调用
由于形参是值传递,当swap函数结束时,形参 a 和 b的生命周期结束,其所拥有的数据自然消失。
可行的办法
1. a 和 b设置为静态变量。
2. 写一个交换类,a和b作为其属性
3. 采用数组
参考:http://bbs.csdn.net/topics/360263839
在c++中存在指针和引用的概念,是对地址进行操作。但是在Java中,对于基本数据类型作为形参,则只能是值传递;而对象只能传引用
故在c++中可以很容易的将数据交换写为一个函数,并在其他函数中调用
#include <iostream> using namespace std; void swap(int* , int*); void swap(int &,int &); int main() { int a = 1,b = 2; swap(&a,&b); cout<<a<<" "<<b<<endl; swap(a,b); cout<<a<<" "<<b<<endl; return 0; } void swap(int* a, int* b){ int temp = *a; *a = *b; *b = temp; } void swap(int &a,int &b){ int temp = a; a = b; b = temp; } //不使用参数的交换方式 void swap2(int &a,int &b){ a = a + b; b = a - b; a = a - b; }而在java中,上述方法是行不通的。
public class Swap { /** * 方法名称:main() * 方法描述: * @param * @return String * @Exception */ public static void main(String[] args) { // TODO Auto-generated method stub int a = 2; int b = 3; swap(a,b); System.out.println(a + "sf " + b); } /** * 方法名称:swap() * 方法描述:该方法无法实现交换 * @param * @return String * @Exception */ private static void swap(int a, int b){ a = a + b; b = a - b; a = a - b; System.out.println(a + " " + b); } }
由于形参是值传递,当swap函数结束时,形参 a 和 b的生命周期结束,其所拥有的数据自然消失。
可行的办法
1. a 和 b设置为静态变量。
2. 写一个交换类,a和b作为其属性
3. 采用数组
参考:http://bbs.csdn.net/topics/360263839
相关文章推荐
- 数组中用异或进行数值交换需要注意的问题
- 选择排序算法中的交换数值问题
- 如何交换a,b的数值——一个简单的问题就证明现在的你依然弱爆了
- 使用Biztalk的异常处理解决交换过程中的出错问题
- <实例>C++中交换两数值的几种方法
- 简单的交换两个变量的数值
- 交换两数,不使用第三变量,且考虑溢出问题
- 怎样不借助第三个变量交换数值
- 尽管是一个CS专业的学生,小B的数学基础很好并对数值计算有着特别的兴趣,喜欢用计算机程序来解决数学问题。现在,她正在玩一个数值变换的游戏。她发现计算机中经常用不同的进制表示同一个数,如十进制数123表达为16进制时只包含两位数7、11(B),用八进制表示时为三位数1、7、3。按不同进制表达时,各个位数的和也不同,如上述例子中十六进制和八进制中各位数的和分别是18和11。
- 解决两个float类型的数值相减,精确度不准确的问题
- tcsh版本问题(字符串转化为数值)
- C语言不通过第三个变量交换a、b两数数值的技巧
- 三种方法实现整型数值交换
- RecyclerView嵌套多个布局,多个editText,解决文本输入框上下交换位置中的值问题
- [原创]两个listbox之间操作数据交换的问题!
- CentOS 6 Iptables关于--hitcount数值限制的问题
- 关于一些数值组合的问题(分金条和人民币面值)
- 关于AD域账户中pwdLastSet的数值问题。
- IOS charts框架 横向柱状图显示数值问题
- 成功完成opnet 14.5 + win7 64-bit +vs2008的安装,附包交换仿真出现的问题及解决方案