同时用引用和指针可以吗?

见到一个这样的声明


int *&a;

这是什么意思?

a 是一个 指向 int* 的引用。

你可以了解一下右左法则,读复杂类型声明(当然,这个int*& a还是很简单的)靠这个法则屡试不爽。

Exercise:

解读一下这个类型 int(**(int, int))(int)

一般情况下,我能想到的合理用途只有一种,就是对于堆对象需要释放后置为空指针的safe free,举一个最简单的例子:

void SafeFree(T*& p)

{

if(!p) return;

delete p;

p = nullptr;

}

要用到指针的引用,说明你要修改指针本身的值,也即是它指向的地址,并且在引用作用域结束后还可能继续使用它。因此除了safe free这种用法,其他的行为我以为都是存在隐患即不安全的,十分不推荐。

作者:匿名用户
链接:https://www.zhihu.com/question/275546953/answer/391760219
来源:知乎

同时用引用和指针 int *a;相关推荐

  1. C++ 引用以及引用与指针的区别

    概述 前面整理了指针的用法,但是经常和指针拿来对比东西是引用.确实指针在使用的过程中会有很多的麻烦,比如赋初值.使用时判空.无效指针.深浅拷贝等等.在我看来引用的指针的高级替代,它的使用规则规避了很多 ...

  2. c一:指针引用(int * p )和指针(int * q)的区别

    #include <iostream>using namespace std;int g = 300;void print(int p, int q) {cout << p & ...

  3. c++引用与指针的区别

    ★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址:引用是某块内存的别名. ★ 区别: 1. 指针是一个实体,而引用仅是个别名: 2. 引用使用时无需解引用(*),指针需 ...

  4. [C++再学习系列] 引用和指针

    下面是网上关于引用和指针区别的常见答案: 引用和指针有如下三种区别: 1 引用必须在声明时初始化,而指针不用: 2 NULL不能引用,而指针可指向NULL: 3 引用一旦声明,引用的对象不能改变(但对 ...

  5. C 引用和指针的区别

    指针和引用在C++中很常用,但是对于它们之间的区别很多初学者都不是太熟悉,下面来谈谈他们2者之间的区别和用法. 指针和引用的定义和性质区别: 指针:指针是一个变量,只不过这个变量存储的是一个地址,指向 ...

  6. 【C++ 语言】引用 ( 引用简介 | 指针常量 | 常量指针 | 常引用 | 引用参数 | 引用 指针 对比 )

    文章目录 I . 引用概念 II . 引用声明 III . 引用 地址 内存 分析 IV . 常引用 V . 引用作为参数 VI . 引用 与 指针 对比 I . 引用概念 C++ 对 C 扩充 : ...

  7. 引用和指针的区别?传引用比传指针安全,为什么?如果我使用常量指针难道不行吗?

    引用和指针的区别 (1) 引用在创建的同时必须初始化,即引用到一个有效的对象:而指针在定义的时候不必初始化,可以在定义后面的任何地方重新赋值. (2) 不存在NULL引用,引用必须与合法的存储单元关联 ...

  8. C++中引用和指针的不同

    引用,其本质就是指针,将它用在一些特别的场合,会比指针更简洁,更方便.具体说来,指针多用于动态内存管理和对数组的操作等,C风格的代码接收和返回指针:引用则往往用在接收和返回类类型的名字空间域函数或类域 ...

  9. 函数名称前面加引用“”或指针符号“*”的意思

    函数名称前面加引用"&"或指针符号"*"的意思 http://blog.csdn.net/qq_38124695/article/details/781 ...

最新文章

  1. Codeforces 706D Vasiliy's Multiset
  2. (原创)speex与wav格式音频文件的互相转换(二)
  3. 第二阶段团队冲刺(七)
  4. c++ boost多线程学习(一)
  5. django 返回ajax html,Django 前台通过json 取出后台数据
  6. pycharm检测不到python编译器_1.2 搭建python+pycharm编程开发环境
  7. C语言八位彩灯循环左移,利用计数器和移位寄存器设计一个八个彩灯循环电路?...
  8. python日期时间_Python日期时间
  9. 201521123026《Java程序设计》第2周学习总结
  10. 操作系统分区原理(笔记)
  11. 从Tiny-4412开箱到启动Linux内核
  12. jdk环境变量的配置
  13. CxImage 使用报错解决办法
  14. git实用技巧:将多次commit合并为一次
  15. OpenCV——图像距离变换
  16. 单片机中段程序_单片机程序延时方法详细介绍
  17. Memory testing 10----Fuctional RAM Modle------Recovery Fault (RF)
  18. Matlab画图技巧
  19. 银行提供了整存整取定期储蓄业务,存期分为1年,2年,3年,5年,到期取本息之和,年利率如下 1年 2.25% 2年 2.7% 3年 3.24% 5年
  20. GSM模块的GPRS的TCP测试成功-校园网(内网穿透)映射

热门文章

  1. keepalived mysql集群_mysql双主+keepalived实现高可用集群
  2. ssm上传文件获取路径_SSM文件上传
  3. mysql进程管理,MySQL管理
  4. shell脚本教学进阶——Linux三大文本处理工具之grep
  5. by截取字段 group_sqlserver group by后获取其他字段(多种方法)
  6. 微型计算机的什么接口主要作为打印机接口,微型计算机及其接口技术试题及答案(2006年10月)...
  7. python scapy 函数_【python|scapy】sprintf输出时raw_string转string
  8. EasyUI DataGrid根据字段动态合并单元格
  9. 深入分析:12C ASM Normal冗余中PDB文件块号与AU关系与恢复
  10. 同步机制之 ReentrantLock