1.指针是间接访问,因为要用*来读取地址处的数据。将指针作为函数的接收参数是间接引用的方式

引用是直接访问,因为引用是别名,不用任何符号就可以直接读取该对象的数据。将别名作为函数的接收参数是直接引用

2.

指针

引用

是否可以为空

可以

不可以

是否可以初始化

可以

可以

是否可以赋值

可以

不可以

是否可以访问堆

可以

不可以

不否可以改变对象

可以改变指向的对象,可以改变对象的值

不可以改变引用的对象,可以改变对象的值

3.例1:int &r = new int; //错误,不可以直接引用来指向堆中空间

4.例2:int *p = new int;

int &r = *p; //正确,r是通过指针p读取到的未命名int型变量的别名

r = 4;

cout << *p ; //输出4

5.例3:int  *&r = new int; //正确

创建一个堆中空间,定义r来作为该空间地址的引用,这样r就成了该空间地址的别名。由于引用不能作为指针来使用,所以在&r前面加个*。这样,r变成了一个指针变量,它保存的是堆中空间的地址。所以用*来访问r,*r就是访问堆中数据。用*来读取r地址处的值,*&r就是读取堆中的地址。

6.例4:

int main() { /*如果int申请失败->返回空指针->产生一个无用的引用 引用不能为空,用*读取一个无用的引用会引用系统崩溃*/ int *&r = new int; *r = 6; /*r是new int的别名,也是新空间地址的别名,用*来访问r,就是读取新空间中保存的数据*/ cout<<"读取新空间的地址处的值"<<*r<<endl; /*r的值是新空间的地址*/ cout<<"输出新空间的地址"<<r<<endl; /*用*r读取r的地址保存的值,则先用&取地址,再用*读取该地址的值*/ cout<<"读取r地址处的值"<<*&r<<endl; /*r也有自身的地址*/ cout<<"输出r的内存地址"<<&r<<endl; return 0; }

输出:

读取新空间的地址处的值6
输出新空间的地址006A1DF8
输出r的内存地址0012FF40

7.int *p, *q; //p和q都是指针

int *p,q; //p是指针,q是变量

转载于:https://www.cnblogs.com/windmissing/archive/2012/01/16/2559878.html

指针与引用的混合使用总结相关推荐

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

    (1)指针是一个变量,本身占有内存,内存中存储的是所指向对象的地址.引用是内存的别名. (2)指针可以通过解引用的方式,取出所指向内存中的值.引用没有解引用. (3)指针可以先定义,然后在后面初始化. ...

  2. C++:const的使用(普通常量、指针、引用)

    const声明的是常量,常量基本上只能读不能写.其实x也是能写的,但他只是在x初始化的时候完成了写操作. int main() {const int x=4;//x是const int型.在初始化时写 ...

  3. 指针,引用之间的关系

    在这之前不清楚引用,和指针有怎样的关系,但今天一个例子让我们知道了指针和引用在程序中怎样运用 在这个地方我们是初始化初始化一个顺序表, 我们在主函数中是定义一个结构体的变量: SqList L; 然后 ...

  4. C++ demo:文本搜索以及'指针的引用'的思考

    功能: 本程序允许用户在一个给定的文件中查询单词.查询结果是单词在文件中出现的次数及其所在行的列表.如果一个单词在一行中出现多次,此行只列出一次.行会按照升序输出,即第7行会在第9行之前显示. 思路: ...

  5. C++的常量、指针、引用

    一.C语言的常量是可以通过地址进行修改的:而C++的常量是不可修改的,且在定义的时候必须初始化! 可引用常量的地址,但只是临时地址: const int a = 10 ; int *b = (int* ...

  6. C++编程进阶4(C++中的强制类型转换运算符、不要返回自定义类内部成员的指针,引用和迭代器)

    十五.C++中的强制类型转换 C语言中的强制类型转换方式有两种 T i = (T)exp; T i = T(exp); 这两种方式没有差别,C++中也支持这两种方式,但是和C++中的强制类型转换运算符 ...

  7. C++知识点2——指针、引用基础

    引用: 1.引用就是对象或变量的别名,但引用不是对象或变量 int a=10; int &b=a; 这里面,b就是变量a的另一个名字,对b操作就是对a操作,对a操作,b也会变化 void te ...

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

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

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

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

最新文章

  1. 假期怎么提升Python技能?100+编程题给你练~
  2. 欧盟发布《人工智能道德准则》:「可信赖 AI」才是 AI 的指路明灯
  3. django 使用Ajax方式POST JSON数据包
  4. shell 脚本常用参数
  5. Day 8: Harp.JS——现代静态web服务器
  6. opencv 人脸识别_人工智能-OpenCV+Python实现人脸识别(视频人脸检测)
  7. Hobbit玩转Zynq MPSoC系列之2:TPG输入+VCU编码+rtp网络传输
  8. samba 2.2.7a 编译
  9. 2021四川高考成绩位次查询,2021年四川高考位次查询及一分一段表排名查询
  10. ajax调用方式汇总
  11. java崩溃停在崩溃代码上_通过编写Java代码让Jvm崩溃
  12. mysql5.6.10开启二进制日志_mysql二进制日志的开启和使用
  13. 猎豹网校C++ Primer学习笔记2
  14. U盘修复,U盘量产教程(以台电晶彩NCU,容量为32G的U盘为实例)by aser
  15. 上海杉达学院计算机课程,上海杉达学院计算机科学与技术专业介绍
  16. 用户研究专题:桌面研究定性研究
  17. CentOs网络管理:ifconfig家族,iproute家族及配置文件
  18. [创业之路-45] :复盘与自省 - 创业公司如何设定股权退出机制?
  19. 马丁福勒《UML精粹》读书笔记_第八章
  20. 组件服务 我的电脑 不可用解决办法

热门文章

  1. python2版本选择_win下安装python2和python3双版本之全美教程
  2. c语言数组求出最大值,求给定数组的最大值与次大值
  3. sharepoint页面嵌入_在其他系统Iframe中显示SharePoint 页面
  4. git撤销单个文件的修改_大牛总结的 Git 使用技巧,写得太好了
  5. 干活的不如写ppt的吗_干活的干不过写PPT的?或许只是工作汇报的方式错了……...
  6. git只提交一张图片_几张图让你彻底弄懂git工作流(三) ——git深入
  7. python基本数据类型float_Python基本数据类型
  8. org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].Standard
  9. vscode怎么全局搜索_VS Code 新版本发布!支持远程开发、同步设置等新特性
  10. linux 启动端口失败,linux – 应用程序’appname’在开放移动节点应用程序启动失败(端口8080不可用)...