注意:
     指向指针的引用是某一指针的别名,同变量的引用一样。引用绝对不是单独存在的,它一定是指示某个已经存在的东西的,它一定是某个已经存在的物体的"别名".  而且它如果被初始化赋值成某个变量后,它就始终是这个变量的替身.对引用的改变就是对这个变量的改变.  

展示一下使用指针的指针和指针的引用修改传递给方法的指针,以便更好的使用它。(这里说的指针的指针不是一个二维数组)

为什么需要使用它们

当我们把一个指针做为参数传一个方法时,其实是把指针的复本传递给了方法,也可以说传递指针是指针的值传递。

如果我们在方法内部修改指针会出现问题,在方法里做修改只是修改的指针的复本(即指针传递下来指针的复本)而不是指针本身,原来的指针还保留着原来的值。

1.指针的引用,相当于传递的是:指针的指针,这样指针的数值是可以改变的.   
2.而单传递指针,不传递指针的引用,那么指针指向的数据是可以改变,而指针本身是不可以改变的.

我们用下边的代码说明一下问题:

int m_value = 1;void func(int *p)
{p = &m_value;
}int main(int argc, char *argv[])
{int n = 2;int *pn = &n;cout << *pn << endl;func(pn);cout << *pn <<endl;return 0;
}

看一下输出结果

输出的是两个2

使用指针的指针

展示一下使用指针的指针做为参数

void func(int **p)
{*p = &m_value;// 也可以根据你的需求分配内存*p = new int;**p = 5;
}int main(int argc, char *argv[])
{int n = 2;int *pn = &n;cout << *pn << endl;func(&pn);cout << *pn <<endl;return 0;
}

我们看一下 func(int **p)这个方法

  • p:  是一个指针的指针,在这里我们不会去对它做修改,否则会丢失这个指针指向的指针地址
  • *p:  是被指向的指针,是一个地址。如果我们修改它,修改的是被指向的指针的内容。换句话说,我们修改的是main()方法里 *pn指针
  • **p: 两次解引用是指向main()方法里*pn的内容

指针的引用

再看一下指针的引用代码

int m_value = 1;void func(int *&p)
{p = &m_value;// 也可以根据你的需求分配内存p = new int;*p = 5;
}int main(int argc, char *argv[])
{int n = 2;int *pn = &n;cout << *pn << endl;func(pn);cout << *pn <<endl;return 0;
}

看一下func(int *&p)方法

  • p:  是指针的引用,main()方法里的 *pn
  • *p:是main()方法里的pn指向的内容。

详解c++[指针的指针] 和 [指针的引用]相关推荐

  1. c语言char数组和short数组的区别,详解C语言中Char型指针数组与字符数组的区别

    详解C语言中Char型指针数组与字符数组的区别 详解C语言中Char型指针数组与字符数组的区别 1.char 类型的指针数组:每个元素都指向一个字符串,指向可以改变 char *name[3] = { ...

  2. jq的插件 vue中引用_详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件

    本篇文章主要介绍了详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件,具有一定的参考价值,有兴趣的可以了解一下 使用vue-cli构建的vue项目,webpack的配置文 ...

  3. c++ 智能指针_详解 C++ 11 中的智能指针

    C/C++ 语言最为人所诟病的特性之一就是存在内存泄露问题,因此后来的大多数语言都提供了内置内存分配与释放功能,有的甚至干脆对语言的使用者屏蔽了内存指针这一概念.这里不置贬褒,手动分配内存与手动释放内 ...

  4. 指针类型作用详解(一):不同指针类型的访问范围不同

    文章目录 前言 一.指针类型的作用 二.int型指针类型与char型指针类型 int型指针类型 2.char型指针类型 总结 前言 指针指向的是一个变量存储的地址,那么在c语言中,不同类型的指针有什么 ...

  5. 详解C语言中的数组指针与指针数组

    ·详解数组指针与指针数组 ·数组指针 一.区分 首先我们需要了解什么是数组指针以及什么是指针数组,如下图: int *p[5]; int (*p)[5]; 数组指针的意思即为通过指针引用数组,p先和* ...

  6. 详解:C语言中的指针和p, p+1, *(p+1), *P+1, p[0], p[0] 的含义

    解析:C语言中的指针和p, p+1, *(p+1), *P+1, p[0], &p[0] 每一种表达式的含义  一.先解决一个问题:什么是指针 指针就是存放地址的变量.很好,百度上就是这个答案 ...

  7. c语言指针常量和常量指针,详解C语言中的常量指针和指针常量

    概述对于新手来说,指针在c语言里总是一个非常难以理解的概念.在这篇文章中,我们将解释常量指针,指针常量,const pointer to const(ps:楼主以为这可以翻译成指向常量的常量指针)的区 ...

  8. php反向引用,JavaScript 正则应用详解【模式、欲查、反向引用等】

    本文实例讲述了JavaScript 正则应用.分享给大家供大家参考,具体如下: 正则应用 正则表达式在web开发中的常用 邮箱验证 用户名验证 替换字符串某一部分 信息采集,用来分析有效代码段 ... ...

  9. MarkDown语法详解:标题、字体、列表、引用、图片、表格、代码、超链接、公式

    文章目录 什么是Markdown? 学习准备 常用语法 标题(二级标题): 三级标题 四级标题 字体 显示效果: 文字设置 分割线 列表 有序列表 无序列表 列表嵌套 引用 单句引用 区块引用嵌套 区 ...

  10. 开源PLM软件Aras详解七 在Aras的Method中如何引用外部DLL

    在实际的项目中,Aras内部的方法可能并不能完全满足我们,比如Office的组件,就必须引入,那么在Aras内部的Method中,我们如何引入外部Dll文件 首先,我们新建一个Dll文件,简单的Dem ...

最新文章

  1. 2022-2028年中国氢化丁腈橡胶行业市场深度分析及投资规模预测报告
  2. ibatis动态查询条件(转载待完善)
  3. Java开发学习--MongoDB
  4. java线程基础巩固---线程生命周期以及start方法源码剖析
  5. Elasticsearch DSL
  6. Openstack 一键安装部署 单节点
  7. 2015workshop-age 的txt 生成过程
  8. 神奇的机器人评课_《机器人》教学反思
  9. POJ1604 UVA568 UVALive5499 Just the Facts【模除+打表】
  10. Linux driver 板级文件跟踪一般方法
  11. h5 px 转dp_西游女儿国h5手游下载-西游女儿国h5手游下载v2.1.4 安卓版
  12. ALSA子系统(十三)------snd_pcm_hw_refine硬件参数重定义
  13. 我裂了,换领导后,竟然每天都要写日报
  14. OBS Studio(obs录屏软件)官方中文版V27.2.4 | 最新obs中文版百度云下载
  15. 微软surface屏幕测试软件,【微软 Surface Pro 3 平板电脑使用感受】屏幕|软件_摘要频道_什么值得买...
  16. ADC 信号调理电路设计——必要措施、实测验证和应用说明(转载)
  17. springBoot整合SqlSessionTemplate使用
  18. 计算机研究生论文写作技巧
  19. 删除数组最后一个元素
  20. 针对NFT的网络钓鱼

热门文章

  1. Linux运维 第三阶段 (一) 网络配置及openssl加密
  2. 十法则打造安全无线局域网
  3. 金融危机下的企业经营战略
  4. java中有jar连接数据库 SqlHelper配置
  5. 浏览器了解(七)Layout
  6. MIT 量子计算的编程语言 Twist
  7. 提升网页加载速度—预加载VS预读取
  8. 此电脑怎么放在桌面上_电脑内部与麦克风的声音怎么同时录制?详细教程在此...
  9. 计算机国三网络技术,计算机国三网络技术.doc
  10. python批量读取图片并复制入word_提取word文档中的图片并使用Python进行批量格式转换,出,Word,里,利用,python...