指针用“*”和“->”操作符,引用用"."操作符,当然这是表面的区别。

  1. 引用必须代表一个对象,没有所谓的空引用。指针可以为NULL。即引用必须有初值,指针不然。所以在使用pointers之前,必须测试它是否为null。references不需要测试。
  2. pointers可以被重新赋值,指向另一个对象,reference总是指向(代表)它最初获得的那个对象:
    string s1("Nancy");
    string s2("Clancy");string &rs = s1;      //rs指向s1.
    string *ps = &s1;  //ps指向s1.
    rs = s2;                 //rs仍然代表s1,//但是s1的值变成了“Clancy”
    ps = &s2;             //ps现在指向s1,//s1没有变化

  3. 还有一些情况需要使用references。例如实现某些操作符的时候。最常见的例子是operator[]。这个操作符很特别的必须返回某种“能够被当做assignment赋值对象”的东西。
  4. 结论:当你知道你需要指向某个东西,而且绝不会改变指向其他东西,或是你实现一个操作符而其语法需求无法由pointers达成,你应该选择references。任何其他时候,请采用pointers。

转载于:https://www.cnblogs.com/yitianke/archive/2013/04/25/3043640.html

指针(pointers)和引用(references)区别相关推荐

  1. 【C++】21.函数传参 传指针和传引用的区别

    指针传参 向函数传指针参数时,注意区分指针的指向(地址) 与 指针指向的地址中存放的值的区别: 改变形参指针的指向,实参指针指向不会变,实参指向的地址存放的值也不会变: 改变形参指针指向的地址中存放的 ...

  2. 指针和 php引用的区别,c的指针和php中的引用的区别

    https://blog.csdn.net/yangfanzn/article/details/44731391 1-php和c中的变量名都会被解析成内存地址,变量名所代表的内存的地址中内容即代表变量 ...

  3. 传指针和传引用的区别

    指针参数传递本质上是值传递,它所传递的是一个地址值.值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,会在栈中开辟内存空间以存放由主调函数传递进来的实参值,从而形成了实参的一个副本(替身). ...

  4. 2020-12-6(从反汇编理解指针和引用的区别)

    这是我10个月前看到的一篇博客吧,感觉分析指针和引用的文章这是我目前见过讲解得最清晰的一篇: 本文主要基于反汇编代码,从初始化.赋值以及取地址三个角度来理解指针和引用的区别. 初始化 写出以下代码并查 ...

  5. c++值传递,指针传递,引用传递以及指针与引用的区别

    值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值.从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入, 不能传出.当函数内部需要修改参数,并且不希望这个改变影 ...

  6. 24.指针和引用的区别

    在面试时经常会被问到 指针和引用的区别,虽然问题很简单但还是总结一下! 指针和引用的区别其实有太多了,主要的区别大概是这样子: 1)指针声明的时候可以不被初始化(有可能成为野指针),但是引用必须要进行 ...

  7. C/C++ 中指针和引用的区别

    C/C++ 中指针和引用的区别 1.指针有自己的一块空间,而引用只是一个别名: 2.使用 sizeof 看一个指针的大小是 4,而引用则是被引用对象的大小: 3.指针可以被初始化为 NULL,而引用必 ...

  8. 【转】指针和引用的区别

    c++中的引用与指针的区别 ★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址:引用是某块内存的别名. ★ 区别: 1. 指针是一个实体,而引用仅是个别名: 2. 引用使 ...

  9. python指针引用的区别_C++基础:指针和引用的区别

    C++基础:指针和引用的区别 *例 int a; int &b = a; 其中b是a的引用,b引用了a,a被b引用.b 相当于 a 的别名,对 b 的任何操作就是对a的操作.所以b既不是a的拷 ...

  10. 指针和引用的区别_浅析指针与引用

    关注"杜明c",每天进步一点点! 已经时隔一个多月没有发文章了,主要是太忙了,绝不是偷懒今天给大家聊一聊指针和引用的不同之处在哪里. 摘要 指针的使用 引用的使用 二者的区别 后话 ...

最新文章

  1. android theme 错误,为什么修改android:theme就崩溃,求助
  2. 这是一份面向Android开发者的复习指南,成功入职字节跳动
  3. matlab 编译 java_MATLAB编译器运行时(MCR)编译器
  4. 2019牛客暑期多校训练营(第七场)-C Governing sand
  5. 美女在中国移动家属院上厕所
  6. java中各种运算符
  7. 上传文件插件uploadify应用简单说明
  8. DIY开源mini桌面i3结构3D打印机--分析
  9. Minidwep-gtk字典 破 WPA
  10. 关于局域网计算机ip地址设置,怎么设置局域网计算机的IP地址
  11. MFC 响应Delete按键按下的操作事件
  12. dmac学习之基于LLI的multi block tranfer验证
  13. 内存管理之:页和页框地址变换结构
  14. 对YY/T 0287-2017 医疗器械 质量管理体系的一些学习
  15. 全体自然数的和是负十二分之一?
  16. 17.Vue的计算属性
  17. linux sed f,Linux Sed 命令详解
  18. Visual Studio 和 .NET Framework 词汇表
  19. 用python实现简单飞行棋
  20. 知识点滴 - 电源适配器接头的极性

热门文章

  1. C语言与Java的深情对话:儿子,还得多练几年啊!老子还是老子
  2. 前后端分离的项目部署到tomcat_前后端分离后,tomcat服务器部署和发布
  3. a标签跳到另一个页面指定选项卡_HTML常用标签
  4. 排序算法html,排序算法总结.html
  5. android viewgroup点击变色,Android ViewGroup事件分发
  6. 工业级光纤收发器九大技术优势介绍
  7. 【渝粤教育】国家开放大学2018年春季 3897T商务英语1 参考试题
  8. Time-of-Flight技术在距离测量和定位上的应用
  9. android 保存文件_Android 数据库操作框架LitePal使用介绍(一)
  10. python有多少库存_库存究竟多少才算合理?