swap函数中的交换,主要是这三种情况

第一种

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 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 swap(int *&x, int *&y)
{int temp = *y;*y = *x;*x = temp;
}

这个其实我们也可以看成第一种情况,把先是把地址传进去

然后是让指针指向的值,也就是系统的值发生交换

主函数中的值肯定是也会发生交换

其实吧,主要就是看系统里的那个系统空间的值有没有改变

如果有主函数中的值也就是系统里的值,会发生变化

以上都是个人对这个swap函数交换和指针的理解

这篇文章以互相学习为主,有什么错的还望告知,谢谢啦

swap函数中的交换 【指针】 学习笔记相关推荐

  1. r语言c函数怎么用,R语言学习笔记——C#中如何使用R语言setwd()函数

    在R语言编译器中,设置当前工作文件夹可以用setwd()函数. > setwd("e://桌面//") > setwd("e:\桌面\") > ...

  2. 数组存储与指针学习笔记(三)指针与数组

    嵌入式C语言学习进阶系列文章 GUN C编译器拓展语法学习笔记(一)GNU C特殊语法部分详解 GUN C编译器拓展语法学习笔记(二)属性声明 GUN C编译器拓展语法学习笔记(三)内联函数.内建函数 ...

  3. 【C 语言】多级指针 ( 在函数中生成 二级指针 | 通过传入的 三级指针 进行间接赋值 )

    文章目录 前言 一.在函数中生成 二级指针 ( 通过传入的 三级指针 进行间接赋值 ) 二.完整代码示例 前言 如果要 通过 函数形参 间接赋值 修改 nnn 级指针, 需要向函数中传入 n+1n + ...

  4. C++ 中 参数包 (typename ...) 学习笔记

    C++ 中 参数包 (typename -) 学习笔记 本文所属地址 https://www.lucien.ink 起因 突然好奇 STL 的 std::tuple 是怎么实现不定参数的,遂搜了搜,发 ...

  5. 【C 语言】指针间接赋值 ( 直接修改 和 间接修改 指针变量 的值 | 在函数中 间接修改 指针变量 的值 | 在函数中 间接修改 外部变量 的原理 )

    文章目录 一.直接修改 和 间接修改 指针变量 的值 二.在函数中 间接修改 指针变量 的值 三.在函数中 间接修改 外部变量 的原理 一.直接修改 和 间接修改 指针变量 的值 直接修改 指针变量 ...

  6. 数据库LINQ TO SQL在Silverlight中的应用(WCF)------学习笔记(一)

    数据库LINQ TO SQL在Silverlight中的应用(WCF)------学习笔记(一) 步骤: 1. 创建SILVERLIGHT应用程序 2. 创建LINQ TO SQL [注意序列化的问题 ...

  7. 函数中结构体指针作为形参修改指针地址

    当函数的形参为结构体指针,但是在函数中不仅修改指针指向的值,而且修改指针指向的地址 以下可以改变主函数中a的值,但是a指向的地址不会发生改变 struct student {int aa;int bb ...

  8. web前端分享HTML5中的nav标签学习笔记

    好程序员web前端分享HTML5中的nav标签学习笔记,nav标签全称navigation,顾名思义,是导航的意思.根据HTML5的相关标准定义如下: "A section of a pag ...

  9. OpenCV学习笔记(三十六)——Kalman滤波做运动目标跟踪 OpenCV学习笔记(三十七)——实用函数、系统函数、宏core OpenCV学习笔记(三十八)——显示当前FPS OpenC

    OpenCV学习笔记(三十六)--Kalman滤波做运动目标跟踪 kalman滤波大家都很熟悉,其基本思想就是先不考虑输入信号和观测噪声的影响,得到状态变量和输出信号的估计值,再用输出信号的估计误差加 ...

最新文章

  1. JAVA 中equals()与==的区别
  2. 网站SEO优化中导入链接有哪些作用?
  3. 【Flutter】自定义 Flutter 组件 ( 创建自定义 StatelessWidget、StatefulWidget 组件 | 调用自定义组件 )
  4. 3个可以写进简历的京东AI NLP项目实战
  5. 虚拟运营商人工服务器,四大必想之事:倒闭、价格、网络
  6. python3.6安装cv2库_win10 +python3.6环境下安装opencv以及pycharm导入cv2有问题的解决办法...
  7. 改变TFS本地映射路径.
  8. java 反射覆盖方法,java – 确定一个方法是否覆盖使用反射的另一个?
  9. 解决Adobe Flash Player不是最新版本方法
  10. 高效记忆/形象记忆(13)110数字编码表 71-80
  11. HashMap排序题
  12. 硬盘格式化数据恢复的软件推荐
  13. 即时通讯软件会取代电子邮件吗?
  14. android实现蓝牙耳机的连接及列表的管理
  15. 【web开发 模拟ua调试】修改chrome浏览器的user agent
  16. php html 纯文本,php – 使用纯文本回退发送HTML简报
  17. 随手记安全吗?随手科技获选深圳市南山区“绿色通道”企业
  18. TikTok代运营丨怎么找到TikTok达人网红?
  19. python二维数组按照第一列排序_Python中二维数组按照某行或列排序的实现方法
  20. 前端优化系列之DNS预获取 dns-prefetch 提升页面载入速度

热门文章

  1. WinHttp.WinHttpRequest.5.1
  2. 手机APP开发之MIT Appinventor详细实战教程(九),工具箱的设计和MIT的基础知识讲解
  3. 设计模式原则 - 接口隔离原则(二)
  4. 你竟然还不知道电脑上的F1-F12快捷键的作用
  5. 概率论——随机变量及其分布
  6. Android分包MultiDex原理详解
  7. 试题 入门训练 Fibonacci数列
  8. use ida6.8 + windbg on win10
  9. 学经济还是学计算机,经济学,计算机和人生
  10. 字节跳动-数据分析-实习面经