c++在传参的过程中,指针()和指针引用(&)是有区别的。
虽然,我们往往可以通过传指针然后通过间址访问来修改指针所指向对象的值,同样,通过引用也可以直接修改对象的值。
但是,当传指针的时候有一个问题,就是,我们虽然可以通过指针来修改指针所指向对象的值,但是我们没有不能直接修改指针的内容(也就是指针变量存放的地址),因为函数传参时实际上是把该指针复制了一遍,虽然指针里面存放的地址还是我们原本那个对象的地址,但是指针变量却不是原来的指针变量了。
所以,当我们想要在函数里修改传过来的指针变量的地址的时候,就必须使用指针引用,否则,这种修改是“无效的”

#include<iostream>
using namespace std;
class Node {public:int data;
};
void fun1(Node* node) {node = new Node();node->data = 2;
}void fun2(Node*& node) {node = new Node();node->data = 2;
}int main() {Node * node = new Node();node->data = 1;fun1(node);cout << "传指针并没有修改到该指针的值,而是新建了一个指针指向了一个新的对象" << endl;cout << node->data << endl;fun2(node);cout << "传指针引用把传进来的指针指向一个新的对象,并修改该对象的值" << endl;cout << node->data << endl;system("pause");
}
传指针并没有修改到该指针的值,而是新建了一个指针指向了一个新的对象
1
传指针引用把传进来的指针指向一个新的对象,并修改该对象的值
2
请按任意键继续. . .

指针引用和引用指针的区别相关推荐

  1. 2020-09-25C++学习笔记引用2:二级指针形参与指针形参的使用方法和区别重难点,主看综合代码(1、指针形参2、引用形参3、二级指针形参4、指针引用形参)

    2020-09-25C++学习笔记引用2:二级指针形参与指针引用搭配做形参的使用方法区别重难点,注意事项主看综合代码(1.指针形参2.引用形参3.二级指针形参4.指针引用形参) 1.指针引用 #inc ...

  2. C/C++函数形参传实参时值传递、指针传递、引用传递的区别

    值传递:形参是实参的副本(复制.拷贝),形参值的改变不会影响实参的值,这种方式是很常见的. 指针传递:形参是指针类型,形参作指针运算后指向的就是实参,所以会影响实参的值.这种方式也是很常见的. 引用传 ...

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

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

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

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

  5. 【C++】21.函数传参 传指针和传引用的区别

    指针传参 向函数传指针参数时,注意区分指针的指向(地址) 与 指针指向的地址中存放的值的区别: 改变形参指针的指向,实参指针指向不会变,实参指向的地址存放的值也不会变: 改变形参指针指向的地址中存放的 ...

  6. C++中引用传递与指针传递区别(进一步整理)

    C++中引用传递与指针传递区别(进一步整理) 博客分类: C/C++ CC++C#J#  从概念上讲.指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变 ...

  7. C++ 引用以及和指针的区别

    所谓引用,通俗来说就是一个对于一个变量起得"别名".引用的声明是: 类型标识 & 引用变量名称 = 被引用变量名. 应该注意: (1)声明引用时,必须同时对其进行初始化,这 ...

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

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

  9. 值传递、指针传递、引用传递的区别

    转自:http://hi.baidu.com/lewutian/blog/item/16436cfabb8a99d5b58f3158.html C++中值传递.指针传递.引用传递的总结 收藏  1. ...

  10. 值传递,指针传递,引用传递的区别

    1.值传递 值传递的意思就是把实际参数的值传递给对应的形式参数,形式参数接收的是实际参数的一个副本,在方法内部操作的是形参而非实参,其值的改变并不影响实参. 2.引用传递 引用传递也就是传的是地址,在 ...

最新文章

  1. OpenCV 【十九】图像金字塔/基本的阈值操作/实现自己的线性滤波器
  2. 【车道线检测】一种基于神经网络+结构约束的车道线检测方法
  3. 为什么SQL正在击败NoSQL,这对未来的数据意味着什么
  4. HashMap 死循环
  5. Java——集合(模拟斗地主洗牌和发牌进行排序)
  6. swift取代python_为什么Swift和Python要抛弃++\--?
  7. python必备基础代码-【Python基础系列】常见的数据预处理方法(附代码)
  8. Siverlight 自定义TreeView 显示带连接线的组织结构树
  9. psp2000 M33 自制固件---恢复模式说明(基本所有版本都适用)
  10. 毛世怀HPDS2017公路路面设计程序系统
  11. Python一个命令开启http下载服务器
  12. 五线谱音名和组别对照表_五线谱简谱对照表
  13. 【电蜂优选科普】USB数据线接口有哪些类型呢?
  14. vuex中辅助函数写法
  15. 计算机c盘无法扩展,电脑c盘怎么扩大_C盘空间不足的扩大步骤-win7之家
  16. 计算机视觉论文-2021-07-26
  17. 数组的常用算法(1)--由“为了集齐108将买多少袋干脆面”展开去
  18. 常见安全漏洞及其解决方案
  19. Python (百万答题类节目)辅助工具代码(实测有效)
  20. 小强升职记-一本好书

热门文章

  1. dorado是什么?
  2. 项目八学好英语网html,网上学习八年级英语
  3. 【Scala】特质与特质的线性化
  4. Photoshop用光与影表现3D立体字效果
  5. 爬虫Task 02 re
  6. mysql 建表 日期格式_MySQL建表时,日期时间类型选择
  7. linux浅拷贝和深拷贝,关于 Python 深拷贝与浅拷贝
  8. 设计模式篇03-抽象工厂模式
  9. What are DASD volumes and labels?
  10. 【存储】cache memory、primary memory and secondary memory