先看下面两个例子:

#include <iostream>     // std::cout
#include <utility>      // std::swapint main() {int x = 10, y = 20;                  // x:10 y:20int* p1 = &x;int* p2 = &y;std::swap(*p1, *p2);                  // x:20 y:10 ,p1->x=20,p2->y=10return 0;
}

#include <iostream>     // std::cout
#include <utility>      // std::swapint main() {int x = 10, y = 20;                  // x:10 y:20int* p1 = &x;int* p2 = &y;std::swap(p1, p2);                   // x:10,y:20,p1->y=20,p2->x=10return 0;
}

上面两个例子,说明了当交换指针时,传不同的参数给swap,结果不同,虽然最后指针所指的值都改变了,但方法是不同的。这就像开锁,原先有两把万能钥匙分别锁两个柜子,钥匙分别存放在两个抽屉里,第一种方法就像是把两个柜子换了,所以抽屉里锁子打开柜子的东西正好换了。第二种办法就像是把两把锁换了,但锁能开的柜子不变,但是抽屉里打开柜子的东西也换了。

swap关于指针的使用相关推荐

  1. C++智能指针:weak_ptr实现详解

    文章目录 weak_ptr描述 声明 作用 原理实现 函数成员使用 总结 weak_ptr描述 声明 头文件:<memory> 模版类:template <class T> c ...

  2. C++指针和数组的区别(不能混用的情况)

    通常情况下,C++中指针和数组是可以混用的,但是,在编写字符数组的全排列的时候,混用却出了问题,因此,今天特地mark一下,以备日后查找 这里整理的,不包括用new开辟的动态数组 1.数组一旦声明,我 ...

  3. [C语言][数据存储+指针进阶]关关难过关关过 迈向光明之路 而我义无反顾 冲

    //数据在内存的存储 //整形: char也归纳为了整形类型了  因为char字符对应的是ASCII值(相对应的具体数字) #include<stdio.h> int main()//调试 ...

  4. [C语言源代码][数据存储+指针] 谁还不会司空震?给我冲!

    #define _CRT_SECURE_NO_WARNINGS //数据在内存的存储 //整形: char也归纳为了整形类型了 因为char字符对应的是ASCII值(相对应的具体数字) //#incl ...

  5. 25 考虑写出一个不抛异常的swap

    一.std::swap std::swap面对指针(如pImpl写法)时效率低,因此需要重写swap 1.1 如何重写swap 为标准库提供特化版本(全特化) //pImpl写法的Widget cla ...

  6. C++ Primer 5th笔记(chap 13 拷贝控制)交换操作

    1. 类对象的交换赋值 Hasptr.h class Hasptr {public: Hasptr(const std::string &s = std::string()):ps(new s ...

  7. muduo学习笔记 - 第2章 线程同步精要

    第2章 线程同步精要 2.1 互斥器 (mutex) 互斥器保护了临界区,任何时刻最多只能有一个线程在mutex划出的临界区内活动 推荐使用原则: 用RAII手法封装mutex的创建.销毁.加锁.解锁 ...

  8. 第十七章 特殊类成员

    第十七章  特殊类成员 1.1  静态成员变量 假如我们要在一个类中的所有对象间共享某种数据,那不妨将其设置为静态成员变量/函数: static x 1.2  静态成员变量 静态成员变量与成员变量有4 ...

  9. 25.C++- 泛型编程之函数模板(详解)

    本章学习: 1)初探函数模板 2)深入理解函数模板 3)多参函数模板 4)重载函数模板 当我们想写个Swap()交换函数时,通常这样写: void Swap(int& a, int& ...

最新文章

  1. 利用pandas读写HDF5文件
  2. AutoMapper 入门
  3. 使用.net core3.0 正式版创建Winform程序
  4. python 绘制时频图 plt.specgram
  5. c语言json映射,GitHub - xujun621/cson: 基于C语言的json数据映射解析库
  6. powershell自动化操作AD域、Exchange邮箱系列(2)—环境要求、搭建及初步演示
  7. 数据保密-第三代透明加密技术
  8. sklearn学习笔记之preprocessing
  9. java.lang.NoClassDefFoundError: org/springframework/dao/support/DaoSupport ...
  10. NOIP2016普及组T4(魔法阵)题解
  11. java access 2007,使用Access 2007 VBA创建数据透视表
  12. 2021毛概知识点章节整理(完整版)
  13. 中国人工智能领域企业分类(附未来企业排行)
  14. Arnold材质节点篇-摄像机
  15. Android更换logo之后小米手机和部分三星手机通知栏的小图标未显示正确的图标问题
  16. 谁你的财神 谁是你的穷神
  17. Error:‘xxx‘ is not iterable 是不可迭代的
  18. 通过R语言实现平稳时间序列的建模--基础(ARMA模型)
  19. PS替换图片中的颜色-局部以及整体变色
  20. 中国统计,向着“大数据时代”迈进!

热门文章

  1. iOS 适配HTTPS方法
  2. python3之time模块
  3. SpringBoot注解大全(转)
  4. Linux下nginx安装与配置
  5. springboot---整合redis
  6. node --- 模块加载机制
  7. linux --- 高级指令
  8. javascript --- spa初体验
  9. ES5-5 参数默认值、递归、预编译、暗示全局变量
  10. 5分钟从零构建第一个 Apache Flink 应用