1.reference一定得代表某个对象,即reference必须有初值;而point没有这种要求,因此它可以有null pointers。即:
pointer可以为空,但是reference 不能为空。

  • 如果你的变量可能为空,那么你应该将其设计为pointer而不是refrence。反之,如果你的变量不能取空值,那么你应该将其设计为reference。
  • reference既然不能为空,也就必须在定义的时候,它就必须被给予一个合理的值。而指针可以为空。
int a = 10;
int *p;         //合法
int& r;         //非法
int& r = a;     //合法

以下行为要避免:

           int *p = null; int& r = *p;
  • 在reference和pointer都可以使用情况下,使用reference更安全。因为reference不能为空,所以在使用之前不需要判断其值是否为空。

2.没有所谓的null reference意味着references可能会比使用pointers更有效率,因为使用reference之前不需要测试其有效性。

3.pointer可以被重新赋值,指向另外一个对象,而reference却总是指向它最初获得的那个对象,类似于常量指针。
即:
pointer所指的对象可以改变,但是reference所指的对象始终不变(通过reference修改的值,最终都会修改reference所引用的那个对象的值)。

  • 如果你所设计的变量在不同时刻需要指向不同的对象,那么需要将其设计为pointer。反之,可以设计为reference因为使用更安全。
string s1("hello");
string s2("world");
string& rString = s1;   //rString引用的是s1对象
string *pString = &s2;  //pString指向s2对象
rString = s2;         //此处只是将s1的值修改为world,即将s2的值赋给s1;
pString = &s1;        //此处pString将指向s1对象

pointer和reference(指针和引用)的区别:*相关推荐

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

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

  2. C++指针和引用的区别

    从概念上讲.指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变. 而引用是一个别名,它在逻辑上不是独立的,它的存在具有 ...

  3. C++中指针和引用的区别与联系

    原文地址:http://blog.csdn.net/thisispan/article/details/7456169 ★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址 ...

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

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

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

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

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

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

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

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

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

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

  9. C++中指针与引用的区别

    指针的本质 指针p也是对象,只不过p存储的数据类型是它所指的对象的地址.可以通过解引用操作符""来访问对象的值,即p. 对象有常量(const)和非常量之分,如果指针本身是常量,即 ...

最新文章

  1. SLAM学习--------相机位姿表示-李群李代数
  2. android ble不配对接收广播数据_蓝牙低功耗(BLE)学习笔记_0
  3. linux c/c++ 原子操作库 atomic atomic_flag 简介
  4. Linux上的gitlab日常操作
  5. 服务器高并发时请求报错_基于redis的分布式锁防止高并发重复请求
  6. 挽救Centos7.0
  7. $.ajax 跨域请求 Web Api
  8. js 控制文件名与文件大小
  9. Leetcode-区域和检索-数组不可变
  10. MobaXterm怎么复制粘贴以及多窗口执行
  11. Linux Shell编程笔记一:相关命令
  12. yum文件,来自网络
  13. TheFatRat生成免杀木马(powershell)报错问题
  14. 三星固态硬盘ssd产品线收集
  15. 实时错误‘94’无效使用null值
  16. 统信UOS系统安装mysql_统信UOS系统手动安装分区方案
  17. 小松的STM32教程(6)——ADC
  18. 5G是什么? --5G
  19. 人工智能下的中秋祝福
  20. java 构造方法能被继承吗_Java中构造函数可以被继承么

热门文章

  1. 如何使用 Python 开发一个【抖音视频下载神器】
  2. 电路邱关源学习笔记——1.4电路元件
  3. 《Java基础入门第2版》--黑马程序员 课后答案及其详解 第6章 集合
  4. 国内最大BT下载站(BTChina.net)关闭声明
  5. 蓝桥杯:小明用积木搭了一个城堡(积木)
  6. 星辰变鸿蒙林蒙,星辰变中的林蒙 就是盘龙中的林雷
  7. Qt Quick 3D系列(三):设置三维模型的金属光泽材质
  8. 搭建s9、s19、L3+维修平台
  9. Docker命令汇总
  10. 台达DVP-EH3系列PLC如何实现远程编程调试和程序上下载