关于交换

这里打个比方:有两杯满满的液体,一杯可乐,一杯雪碧,想要把两个杯子里面的东西交换位置,我们只能再拿一个空的杯子(第三个杯子),才能去进行交换。
回归"交换"这个问题,先在main函数里面进行交换。如图一所示:

错误示范:

根据上面,我们通常封装函数会这样写。但其实这是不对的!这样不能完成交换。首先程序从主函数开始执行
①先创建a与b两个变量(它们有各自的空间,地址)。
②执行Swap函数,里面又分配了两个空间,分别是x,y,它们又有各自的空间以及地址,Swap函数里面的x与y是独立的两个空间,跟main函数里面的a,b两个是不同的个体。而x,y它们在Swap函数里面进行交换并不会影响main函数里面a,b的结果。
所以这是不能进行交换的。

正确写法:

函数的执行步骤:
①先创建a与b两个变量(它们有各自的空间,地址)。
②程序执行到Swap函数,开始传参,把a的地址传给pa,把b的地址传给pb。它们两个是指针变量,开辟了两块空间,空间里面存着地址。
③然后通过*pa,*pb,*表示(解引用)通过它们的地址找到a,b。再进行里面的值交换。如图二所示:

最后,不一定是所有函数都适合传址调用,比如“”比较较大值”,传值调用就可以实现,而且相对来说更加简便和直观,就不需要再用到传址调用了。

写一个函数用于交换两个变量的值相关推荐

  1. php比较两个变量的值_总结PHP不用第三个变量交换两个变量的值的几种方法

    "PHP不用第三个变量交换两个变量的值"这个题看到过好多次了,看来面试确实喜欢考这道题.今天,对于这个题目,我自己总结了几种方法,可能不全,大家来互相补充. 有些仅适用于字符串,方 ...

  2. 通过Swap函数交换两个变量的值

    正确代码: void Swap(int *p1,int *p2) {int tmp;tmp = *p1;*p1 = *p2;*p2 = tmp; } 定义一个整形变量tmp,p1=&a ,p2 ...

  3. Python之写一个函数用于字符串替换

    文章目录 写在开头的话 写一个函数用于字符串替换 题目 解析 写在最后的话: 这里是一段防爬虫文本,请读者忽略. 本文原创首发于CSDN,作者IDYS 博客首页:https://blog.csdn.n ...

  4. 《剑指offer》写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。...

    弱菜刷题还是刷中文题好了,没必要和英文过不去,现在的重点是基本代码能力的恢复. [题目] 剑指offer 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. [思路] 直觉 ...

  5. (14)写一个函数,将两个字符串连接

    写一个函数,将两个字符串连接 程序分析:用户在控制台输出第一个字符串后按下回车键继续输出下一个字符串.需要加上getchar()读取换行符,若不进行处理程序会将换行符也连接到新的字符串中. #incl ...

  6. 两个字符串连接程序C语言,写一个函数,将两个字符串连接。 C语言

    写一个函数,将两个字符串连接. 以下是此题的[c源代码],需要[c++源代码]请点击进入 #include int main() {void concatenate(char string1[],ch ...

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

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

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

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

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

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

最新文章

  1. Revit二次开发之“选择某一楼层的墙”
  2. 淘宝二面,面试官居然把TCP三次握手问的这么详细
  3. svn: Can't convert string from 'UTF-8' to native encoding
  4. wxWidgets:制作渲染循环
  5. Qt5.0中lineEdit的输入输出
  6. shell 进入hadoop_Hadoop关于HDFS的基本操作(Shell命令)
  7. vs 启动调用的目标发生异常_协程中的取消和异常 | 取消操作详解
  8. GAN也有脾气:「太难的部分我就不生成了,在下告退」
  9. ES6新特性_Promise对象的catch方法---JavaScript_ECMAScript_ES6-ES11新特性工作笔记029
  10. 打开大数据研究的潘多拉魔盒
  11. Java-实现简单取色器
  12. 试用officescan 10.5
  13. 微软永恒之蓝ms17010补丁下载-wannacry
  14. JAVAFX的table样式修改
  15. iOS 给文字上面加贯穿横线
  16. 【Linux】常用命令:网络、内存、cron 超详细介绍
  17. 互联网诞生记:风起于青萍之末
  18. 火狐浏览器必备的一些Hack插件
  19. imToken安卓版下载
  20. HM编码器代码阅读(14)——帧间预測之AMVP模式(二)predInterSearch函数

热门文章

  1. 云畅科技CEO蔡鑫莹谈企业发展:“顺应趋势,创造价值!”
  2. vue 导航守卫(一) 之 全局前置守卫全局后置守卫
  3. 抖音怎么才能发长视频?详谈抖音发长视频(60s)的要求
  4. Python 第一部分 Python基础
  5. 学习数据分析可以参加哪些大赛?
  6. css----栅格布局的四种大小xs,sm,md,lg详解
  7. Pycharm社区版配置SQLite可视化
  8. F~ファナティック~的原型:弗兰肯斯坦因
  9. 欧洲最流行的智商测试--标准IQ
  10. Axure改变缩放比后使界面回归坐标零零的位置