正确代码:

void Swap(int *p1,int *p2)
{int tmp;tmp = *p1;*p1 = *p2;*p2 = tmp;
}

定义一个整形变量tmp,p1=&a ,p2=&b,首先在tmp里存入a的值,然后将b的值赋给a,再将tmp里的值赋给。这样就完成了a与b两个数的交换。

我们经常会发现自己写出的程序并不能达到我们的要求,在写这类题的时候我们也可能写过以下三种错误的编写方式,让我们来分析一下。
错误一:

void Swap1(int a,int b)
{int tmp = a;a = b;b = tmp;
}
int main()
{int a = 10;int b = 20;Swap(&a,&b);printf("%d,%d\n",a,b);return 0;
}

错误一中错误理解Swap函数与主函数中的参数,Swap函数中的参数为形参,而主函数中的参数为实参,两者并不是同一类型的参数,所以在Swap函数中交换两个形参的值并不会影响主函数中实参的值,因为此时,两个函数中的a与b所处的地址不同,改变一个函数中的值,对另一个函数中的值并不会产生影响。
错误二:

void Swap2(int *p1,int *p2)
{int *tmp = p1;p1 = p2;p2 = tmp;
}

错误二中定义一个整形指针来存放p1,然后交换p1与p2的值,再将tmp的值赋给p2。但请注意,我们这里定义的是整形指针p1与p2,他们分别指向a与b,(p1=&a ,p2=&b),在当p1与p2的值交换之后,p1改变为指向b,p2改变为指向a(p1=&b ,p2=&a),但这时a与b的值并没有发生变化,仅修改了指针。

错误三:

void Swap3(int *p1,int *p2)
{int *tmp;*tmp = *p1;*p1 = *p2;*p2 = *tmp;
}

错误三中定义的整形指针*tmp未被初始化,形成了一个野指针(也叫悬挂指针),你没有访问权限的地址(指针),这个指针有可能不存在,也有可能存在但是你不能访问。在出现野指针后,整个程序会崩溃,无法输出你想要的结果。

通过Swap函数交换两个变量的值相关推荐

  1. 关于如何通过Swap函数交换两个变量的值

    数据交换在C语言中十分常见.作为初学者首先学的应该都是如下方式: int main() {int a = 10;int b = 20;int tmp = a;a = b;b = tmp;printf( ...

  2. C语言如何使用函数交换两个变量的值

    函数交换变量值 首先咱们先来看一下平常咱们会想到的一个方法 定义一个临时变量来交换数值 #include<stdio.h> #include<stdlib.h> void sw ...

  3. 函数交换两个变量java_java 编写函数 交换两个基本变量的值

    java 编写函数 交换两个基本变量的值 Java编写一个函数交换两个变量的值 Java函数在传递过程中只能够传值,不能传址.这样,函数的参数在函数内部做任何变化就都不会反映到外部调用者来.所以解决之 ...

  4. 不使用第三个变量来交换两个变量的值

    前言 在一些公司的面试中可能会有些面试官会出一些奇奇怪怪的问题,比如怎么样计算1加到100的和要求不能使用加法,减法,循环和if判断,再比如怎么样不用第三个变量来交换两个变量的值等问题.这里我们先分析 ...

  5. 简单算法实现交换两个变量的值

      谈到算法,好多人都感到脑壳疼,我也不例外.主要是平时工作忙,下班了还有各种进步,基本对算法这一块研究的较少.算法可以称之为前辈智慧的结晶.算法的好坏更多的是从时间复杂度,空间复杂度来考量的.对于我 ...

  6. PHP中不用第三个变量交换两个变量的值

    相信大家在PHP面试或者学习中经常会遇到这个问题就是"不用第三个变量来交换两个变量的值",今天正对这个问题来讨论一下: 第一种方法:首先会想到的 这种方法简单可行,顺利的交换了两个 ...

  7. C语言中的关键字,变量的定义,变量的命名规则,交换两个变量的值,驼峰命名法【 C语言变量名命名法则】

    C语言结构 C语言中的关键字 变量 变量的定义 变量的命名规则 交换两个变量的值 驼峰命名法 C语言结构 上图中我们可以看到最外层是程序,内部是所有的构成,我们从最里面开始说明. 当我们用计算机语言来 ...

  8. Python中有几种办法交换两个变量的值?

    交换两个变量的值方法,这个面试题如果只写一种当然很简单,没什么可以说的.今天这个面试是问大家有几种办法来实现交换两个变量的值 .在没开始看具体答案前,你可以先想想看 . 下面分别来说说这几种方法: 1 ...

  9. python交换两个变量的值_python交换两个变量的值方法

    python交换两个变量的值方法 大部分语言,例如c语言,交换两个变量的值需要使用中间变量. 例如交换a,b 伪代码: tmp = a a = b b = tmp python里面可以实现无临时变量的 ...

最新文章

  1. 要懂得利用和筛选友情链接
  2. java文字转语音支持ubuntu系统_9个(实时)语音转文字APP分享(推荐收藏)
  3. MS SQL入门基础:数据库中的锁
  4. Apache服务配置
  5. 要不要买保险,看这篇就够了
  6. 思科、华为远程登录配置小结
  7. dw如何点击图片放大的代码_JavaScript点小图弹出放大图片的代码
  8. jsp中写隐藏td标签_28. Django 2.1.7 模板语言 变量、标签、过滤器、自定义过滤器、模板注释...
  9. php用按钮导出到excel,PHP导出Excel,PHP输入Excel
  10. 三点估算 Sigma(σ)的值,期望值,标准差
  11. 中医电脑cac处方系统 v1.3.3.8 免费
  12. 计算机编码--3.GB2312与GBK
  13. 60天申请软件著作权
  14. 拼团不成功自动退款功能php实现,壹佰万能门店 1.0.89 小程序前端+后端 【优化】拼团订单不成团自动退款 微擎模块...
  15. 单例模式-八种方法代码详解
  16. 仙人掌之歌——大规模高速扩张(1)
  17. java实现简单泡泡屏保动画及点击变实心泡泡
  18. 记住密码的那一刹那显示
  19. Line云端全自动加好友机器人
  20. 易掌员工电脑监控软件怎么样?有哪些功能?

热门文章

  1. PCI - PCI概述
  2. 【microbit】micropython 之 体感遥控器
  3. 接口测试,利用charles修改app的任意字段
  4. 花游双人、三级跳斩获金银
  5. js中数组的几种循环方式
  6. Charles4.6.2版本手机抓包设置,抓包失败的解决方法详解
  7. 06 Errors For Go1.13
  8. 代码已上传至googlecode
  9. Centos7下为nvidia显卡安装驱动
  10. oracle最小采购量,EBS oracle 批量导入更新MOQ(最小拆分量、采购提前期、最小订购量、最小包装量)...