文档章节

数值交换问题

哭哭吓唬你
 哭哭吓唬你
发布于 2014/03/29 11:41
字数 363
阅读 72
收藏 2
在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

© 著作权归作者所有

哭哭吓唬你
粉丝 4
博文 101
码字总数 40066
作品 0
石景山
程序员
私信 提问
C Primer Plus 第9章 函数 9.6 改变函数中的变量

有时我们需要用一个函数改变另一个函数中的变量。例如,排序问题的一个常见任务是交换两个变量的数值。假设要交换两个变量x和y的数值: x=y; y=x; 上面这段简单的代码并不能实现这个功能,因...

idreamo
2016/07/15
20
0
不用中间变量交换 a ,b(三种方法)

1、加减法:该方法可以交换整型和浮点型数值的变量,但在处理浮点型的时候有可能出现精度的损失。 a = a + b; b = a - b; a = a - b; 2、异或法:可以完成对整型变量的交换,对于浮点型变量它...

robslove
02/17
14
0
查看Linux系统负载

防伪码:没有相当程度的孤独是不可能有内心的平和。 1、概念 负载信息有3个数值,第一个数值表示1分钟内系统的平均负载值,第二个数值表示5分钟内系统的平均负载值,第三个数值表示15分钟内系...

达日来
2017/07/07
0
0
算法学习笔记(四)---第k个二进制数字问题

昨天晚上做微软的线上测试,被虐的杠杠的。。。先贴一道题出来,题目如下 重点还是思想,而且一点出来这个思想真的不难。 就是二进制数字排序问题。比如2个1,2个0的时候,排序就是: 0011,0...

夏尘安
2014/04/13
213
0
交换两个数值的方法,注意有【坑】,闲来无事,总结一下

作者:shede333 主页:http://my.oschina.net/shede333 && http://blog.sina.com.cn/u/1509658847 版权声明:原创文章,版权声明:自由转载-非商用-非衍生-保持署名 [Creative Commons BY-N...

shede333
2014/12/24
466
0

没有更多内容

加载失败,请刷新页面

加载更多

刚哥谈架构 (二) 我眼中的架构师

之前在公司,有小伙伴在向别人介绍我的时候,经常会有人这么说:“刚哥是我们的architcture”,如果来人是老外,心中一定是一惊,心中暗叹,“这位匪首看上去貌不惊人,难道已经做到了架构和...

naughty
34分钟前
2
0
OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
89
3
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
5
0
Spring Boot + Mybatis-Plus 集成与使用(二)

前言: 本章节介绍MyBatis-Puls的CRUD使用。在开始之前,先简单讲解下上章节关于Spring Boot是如何自动配置MyBatis-Plus。 一、自动配置 当Spring Boot应用从主方法main()启动后,首先加载S...

伴学编程
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部