1. #include <iostream>
  2. using namespace std;
  3.  
  4. /*值传递,局部变量a和b的值确实在调用swap0时变化了,当结束时,他们绳命周期结束*/
  5. void swap0(int a, int b)
  6. {
  7. int tem = a;
  8. a = b;
  9. b = a;
  10. }
  11.  
  12. /*没有初始化指针就开始用,该函数是有问题的*/
  13. void swap1(int *a, int *b)
  14. {
  15. int *tem; /*注意tem没有分配内存*/
  16.  
  17. *tem = *a;
  18. *a = *b;
  19. *b = *tem;
  20. }
  21.  
  22. /*函数内只是指针的变化,指针的值没有变化*/
  23. void swap2(int *a, int *b)
  24. {
  25. int *tem;
  26.  
  27. tem = a;
  28. a = b;
  29. b = tem;
  30.  
  31. }
  32.  
  33. /*指针传递实现两个数的交换*/
  34. void swap3(int *a, int *b)
  35. {
  36. int tem;
  37.  
  38. tem = *a;
  39. *a = *b;
  40. *b = tem;
  41. }
  42.  
  43. /*指针传递实现两个数的交换*/
  44. void swap4(int &a, int &b)
  45. {
  46. int tem;
  47.  
  48. tem = a;
  49. a = b;
  50. b = tem;
  51. }
  52.  
  53. int main()
  54. {
  55. int num1 = 1;
  56. int num2 = 2;
  57.  
  58. //swap0(num1, num2);
  59.  
  60. //swap1(&num1, &num2);
  61.  
  62. //swap2(&num1, &num2);
  63.  
  64. //swap3(&num1, &num2);
  65.  
  66. swap4(num1, num2);
  67.  
  68. cout << num1 << endl << num2 << endl;
  69. return 0;
  70. }

几种交换两个数函数(swap函数)的写法和解析的更多相关文章

  1. Qt_C++交换两个数

    在编程过程中,交换两个数是我用常用的 ,这里做下简单的搬运 bool Widget::swap(int a, int b) { int temp =a; a= b; b = temp; } 这种方式其 ...

  2. c语言实现交换两个数的值

    C语言中要实现交换两个数的值,可以有很多种方法,具体如下所述. 不使用中间变量: // 异或, a^=b^=a^=b; a ^= b; b ^= a; a ^= b; // 加减 a = a + b; ...

  3. 20140806 交换两个数 extern “C”用法

    1.交换两个数 方法1.a+b有可能越界 a=a+b; b=a-b; a=a-b; 方法二.不会越界 a=a^b b=a^b; a=a^b;   2.extern "C"用法 ( ...

  4. 实现pow(int x, int y),即x的y次方 ; 异或交换两个数;

    问题1:实现pow(int x, int y) ,即x的y次方 x的y次方就是有y个x连续乘机,代码如下: #include <stdio.h> #include <stdlib.h ...

  5. C语言交换两个数的值

    #include<stdio.h> int main() { //交换两个数的值 // 方法一 可读性最好 ; ; int temp ; temp = a; a = b; b = temp ...

  6. c语言函数实现交换两个数的值

    代码: #include <stdio.h> void swap(int x,int y) { int temp; temp = x; x = y; y = temp; printf(&q ...

  7. java中不创建使用第三方变量,交换两个数的值

    1.直接使用算术运算法交换 先把两个数的和赋值给其中一个,然后做减法.例如num1=num1+num2; 此时num2(交换之后)就等于num1减去num2:废话不多说,直接上代码 public cl ...

  8. C#交换两个变量值的多种写法

    在学习.Net/C#或者任何一门面向对象语言的初期,大家都写过交换两个变量值,通常是通过临时变量来实现.本篇使用多种方式实现两个变量值的交换. 假设int x =1; int y = 2;现在交换两个 ...

  9. C/C++ 交换两个数,不使用第三个变量, 函数模板来实现

    #include <iostream> template<typename T> void exchangeTwoNumber(T &t1, T &t2): v ...

随机推荐

  1. Android开发之UI更新交互机制与实例解析

    android开发过程中,经常需要更新UI的状态和文案等.这是就需要对UI进行 更新.在android中更新UI一般有三种方法,handler机制.RunOnUiThread方法以及AsyncTask ...

  2. Linux下搭建Oracle11g RAC(3)----创建用户及配置相关文件

    配置11gR2 RAC需要安装Oracle Grid Infrastructure软件.Oracle数据库软件,其中Grid软件等同于Oracle 10g的Clusterware集群件.Oracle建 ...

  3. Android(java)学习笔记190:Eclipse中的控制台不停报错Can't bind to local 8700 for debugger

    [DDMS] Can't bind to local 8600 for debugger 改成 Under Window -> Preferences -> Android -> D ...

  4. MyTask4

    最近稍微做了点修改,把几处bug修复了下,另外新增了授权码功能和数据缓冲功能 先看看效果图 1. 如果要把软件做的高大上一些,你可以加一个授权验证,授权码以字符串形式存放在程序里面,当然你也可以另外开 ...

  5. 原生js日期时间插件鼠标点击文本框弹出日期时间表格选择日期时间

    原文出处 (这是我从互联网上搜来的,感觉能满足各方面的需求.个人感觉挺不错的,所以后期修改了一下向大家推荐!) 效果图: html代码: <!DOCTYPE html PUBLIC " ...

  6. vue写请求接口--请求参数的变量要在return里面声明

    //谨记return里面是返回所有声明的变量的名字,数组以及对象等等 export default { data () { return { //所有的变量都是写在data 的return里面的,主要 ...

  7. TCP/IP 协议理解

    TCP/IP 协议(Transmission Control Protocol / internet Protocol),因特网互联协议,又名网络通讯协议.通俗而言:TCP负责发现传输的问题,一有问题 ...

  8. mysql命令使用

    1.连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root ...

  9. (转)Spring MVC

    资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf SpringMVC核心配置文件示例.rar 作者:赵磊 博客:http://elf8848.iteye.com 目录 一.前 ...

  10. U3D 抛物线的方法

    本文转载:http://www.manew.com/thread-44642-1-1.html 无论是愤怒的小鸟,还是弓箭发射功能,亦或者模拟炮弹受重力影响等抛物线轨迹,都可以使用本文的方法,模拟绝对 ...