详解c++[指针的指针] 和 [指针的引用]
展示一下使用指针的指针和指针的引用修改传递给方法的指针,以便更好的使用它。(这里说的指针的指针不是一个二维数组)
为什么需要使用它们
当我们把一个指针做为参数传一个方法时,其实是把指针的复本传递给了方法,也可以说传递指针是指针的值传递。
如果我们在方法内部修改指针会出现问题,在方法里做修改只是修改的指针的复本(即指针传递下来指针的复本)而不是指针本身,原来的指针还保留着原来的值。
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++[指针的指针] 和 [指针的引用]相关推荐
- c语言char数组和short数组的区别,详解C语言中Char型指针数组与字符数组的区别
详解C语言中Char型指针数组与字符数组的区别 详解C语言中Char型指针数组与字符数组的区别 1.char 类型的指针数组:每个元素都指向一个字符串,指向可以改变 char *name[3] = { ...
- jq的插件 vue中引用_详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
本篇文章主要介绍了详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件,具有一定的参考价值,有兴趣的可以了解一下 使用vue-cli构建的vue项目,webpack的配置文 ...
- c++ 智能指针_详解 C++ 11 中的智能指针
C/C++ 语言最为人所诟病的特性之一就是存在内存泄露问题,因此后来的大多数语言都提供了内置内存分配与释放功能,有的甚至干脆对语言的使用者屏蔽了内存指针这一概念.这里不置贬褒,手动分配内存与手动释放内 ...
- 指针类型作用详解(一):不同指针类型的访问范围不同
文章目录 前言 一.指针类型的作用 二.int型指针类型与char型指针类型 int型指针类型 2.char型指针类型 总结 前言 指针指向的是一个变量存储的地址,那么在c语言中,不同类型的指针有什么 ...
- 详解C语言中的数组指针与指针数组
·详解数组指针与指针数组 ·数组指针 一.区分 首先我们需要了解什么是数组指针以及什么是指针数组,如下图: int *p[5]; int (*p)[5]; 数组指针的意思即为通过指针引用数组,p先和* ...
- 详解:C语言中的指针和p, p+1, *(p+1), *P+1, p[0], p[0] 的含义
解析:C语言中的指针和p, p+1, *(p+1), *P+1, p[0], &p[0] 每一种表达式的含义 一.先解决一个问题:什么是指针 指针就是存放地址的变量.很好,百度上就是这个答案 ...
- c语言指针常量和常量指针,详解C语言中的常量指针和指针常量
概述对于新手来说,指针在c语言里总是一个非常难以理解的概念.在这篇文章中,我们将解释常量指针,指针常量,const pointer to const(ps:楼主以为这可以翻译成指向常量的常量指针)的区 ...
- php反向引用,JavaScript 正则应用详解【模式、欲查、反向引用等】
本文实例讲述了JavaScript 正则应用.分享给大家供大家参考,具体如下: 正则应用 正则表达式在web开发中的常用 邮箱验证 用户名验证 替换字符串某一部分 信息采集,用来分析有效代码段 ... ...
- MarkDown语法详解:标题、字体、列表、引用、图片、表格、代码、超链接、公式
文章目录 什么是Markdown? 学习准备 常用语法 标题(二级标题): 三级标题 四级标题 字体 显示效果: 文字设置 分割线 列表 有序列表 无序列表 列表嵌套 引用 单句引用 区块引用嵌套 区 ...
- 开源PLM软件Aras详解七 在Aras的Method中如何引用外部DLL
在实际的项目中,Aras内部的方法可能并不能完全满足我们,比如Office的组件,就必须引入,那么在Aras内部的Method中,我们如何引入外部Dll文件 首先,我们新建一个Dll文件,简单的Dem ...
最新文章
- 2022-2028年中国氢化丁腈橡胶行业市场深度分析及投资规模预测报告
- ibatis动态查询条件(转载待完善)
- Java开发学习--MongoDB
- java线程基础巩固---线程生命周期以及start方法源码剖析
- Elasticsearch DSL
- Openstack 一键安装部署 单节点
- 2015workshop-age 的txt 生成过程
- 神奇的机器人评课_《机器人》教学反思
- POJ1604 UVA568 UVALive5499 Just the Facts【模除+打表】
- Linux driver 板级文件跟踪一般方法
- h5 px 转dp_西游女儿国h5手游下载-西游女儿国h5手游下载v2.1.4 安卓版
- ALSA子系统(十三)------snd_pcm_hw_refine硬件参数重定义
- 我裂了,换领导后,竟然每天都要写日报
- OBS Studio(obs录屏软件)官方中文版V27.2.4 | 最新obs中文版百度云下载
- 微软surface屏幕测试软件,【微软 Surface Pro 3 平板电脑使用感受】屏幕|软件_摘要频道_什么值得买...
- ADC 信号调理电路设计——必要措施、实测验证和应用说明(转载)
- springBoot整合SqlSessionTemplate使用
- 计算机研究生论文写作技巧
- 删除数组最后一个元素
- 针对NFT的网络钓鱼
热门文章
- Linux运维 第三阶段 (一) 网络配置及openssl加密
- 十法则打造安全无线局域网
- 金融危机下的企业经营战略
- java中有jar连接数据库 SqlHelper配置
- 浏览器了解(七)Layout
- MIT 量子计算的编程语言 Twist
- 提升网页加载速度—预加载VS预读取
- 此电脑怎么放在桌面上_电脑内部与麦克风的声音怎么同时录制?详细教程在此...
- 计算机国三网络技术,计算机国三网络技术.doc
- python批量读取图片并复制入word_提取word文档中的图片并使用Python进行批量格式转换,出,Word,里,利用,python...