当函数的形参为指针时:
形参只是获得了实参的地址值,当你改变形参的指向时,实参的指向并不改变

当函数的形参为指针引用时:
形参不仅仅获得了实参的地址值,还和实参地址绑定,改变形参的指向就能改变实参的指向

示意图如下:

测试代码:

#include <iostream>using namespace std;void ChangeAddr(int *addr)
{cout << "指针传参修改cur的:" << endl;cout << "修改前addr指向的地址:" << addr << endl;addr = new int(10);cout << "修改后addr指向的地址:" << addr << endl;
}
void ChangeAddrRef(int*& addr)
{cout << "指针引用传参修改cur的:" << endl;cout << "修改前addr指向的地址:" << addr << endl;addr = new int(10);cout << "修改后addr指向的地址:" << addr << endl;
}int main()
{int *cur = new int(1);cout << "cur指向的原始地址:" << cur << endl;cout << "----------------------" << endl;ChangeAddr(cur);cout << "调用传指针修改后cur指向的地址:" << cur << endl;cout << "----------------------" << endl;ChangeAddrRef(cur);cout << "调用传指针引用修改后后cur指向的地址:" << cur << endl;system("pause");return 0;
}

结果:

从实测结果可以很好的印证之前的结论。

总结:引用就是相同于取别名,本质还是不变。比如你的同学朋友叫你的全名,但是你的家人会叫你的小名,但是都是你自己。

本人水平有限,欢迎各位码友批评指正。

函数形参为指针和指针引用的区别相关推荐

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

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

  2. 传指针和传引用的区别

    指针参数传递本质上是值传递,它所传递的是一个地址值.值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,会在栈中开辟内存空间以存放由主调函数传递进来的实参值,从而形成了实参的一个副本(替身). ...

  3. Python基础day05【函数(函数传参的两种形式、函数形参)、拆包、引用、可变与不可变类型、引用做函数参数注意点】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员]    目录 0.复习 1.函数传参的两种形式[掌握] 2.函数形参 2.1.缺省参数(默认参数) ...

  4. 指针和 php引用的区别,c的指针和php中的引用的区别

    https://blog.csdn.net/yangfanzn/article/details/44731391 1-php和c中的变量名都会被解析成内存地址,变量名所代表的内存的地址中内容即代表变量 ...

  5. 2020-12-6(从反汇编理解指针和引用的区别)

    这是我10个月前看到的一篇博客吧,感觉分析指针和引用的文章这是我目前见过讲解得最清晰的一篇: 本文主要基于反汇编代码,从初始化.赋值以及取地址三个角度来理解指针和引用的区别. 初始化 写出以下代码并查 ...

  6. 取消对 null 指针“l”的引用。_彻底理解链表中为何使用二级指针或者一级指针的引用...

    在用c/c++写数据结构程序时,链表和二叉树中经常需要用到二级指针或者一级指针的引用,那么什么时候用什么时候不用呢? 先看一个简单的c++链表操作程序: [cpp] view plaincopy/* ...

  7. Python基础day05【函数(局部变量、全局变量、多函数执行流程、函数返回值、函数参数)、拆包、引用、可变与不可变类型、函数注意事项】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day05[函数(函数传参的两种形式.函数形参).拆包.引用.可变与不可变类型.引 ...

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

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

  9. C++函数形参为指针和指针引用的区别

    区别: 1.指针传参被调用函数的指针变量在栈内存中重新申请内存. 2.指针引用传参被调用函数的指针变量与调用函数的指针变量共用一块空间. // PointerCite.cpp : 定义控制台应用程序的 ...

  10. C++ 函数参数传递:传值,传指针,传引用

    PS:首先理解形参   实参概念.形参是在函数定义的括号内定义的专用变量,它们的目的是保存按实参传递给它们的信息,实参被列在函数调用语句的括号内. int func(int x)//x是形参 {ret ...

最新文章

  1. 下载和安装Nginx之配置选项
  2. Python学习之字符串格式化
  3. 实验4.1 循环控制 一
  4. wxWidgets的一些资源
  5. LILY 英语携手神策数据 数据赋能少儿英语学习创新体验
  6. kotlin获取属性_Kotlin程序获取系统名称
  7. 计算机一级重点知识,计算机一级MSOffice考试重点:数制的基本概念
  8. Intel IPP密码库 IPPCP 2018 开发笔记与总结(全)
  9. android 定时开关机,android 定时关机
  10. Unity中的资源管理-资源类型和基本使用
  11. python生成vcf通讯录文件
  12. 1132: 数字字符统计 C语言
  13. Gartner 魔力象限:云基础设施和平台服务 2020年
  14. 模块*.ocx已加载,但对DllRegisterServer的调用失败,错误代码0x8002801c问题解决
  15. MAC系统字体库存放目录
  16. RTOS系统的UCOS
  17. “创意城市美食之都”厨艺表演在澳门揭幕
  18. 作为面试官被放鸽子的50个理由,论如何放面试官的鸽子
  19. [NEFU]Python应用课程 PPT速记
  20. STK的CZML Exporter插件

热门文章

  1. 支付宝支付 第一集:没有营业执照,怎样申请一个支付宝的商家号进行开发?使用支付宝支付开发网页移动应用,一分钟申请注册一个支付宝支付沙箱账号,支付宝支付入驻、创建应用、获取AppID
  2. 微信即将推出应用号 小马哥在下一盘很大的棋
  3. Top-Notch Insertions(思维/组合/线段树)
  4. 台式计算机可以看视频吗,详细教你电脑看视频没声音怎么回事
  5. android 斑马线进度条,jQuery简单斑马线样式loading进度条动画特效
  6. C#之CAD插入外部块文件
  7. 神武3手游怎么授权位置服务器,神武3手游双平台-游云惊龙开服时间表_神武3手游新区开服预告_第一手游网手游开服表...
  8. 在Unity 3D空间中显示文字
  9. 我的世界服务器修改游戏难度,[娱乐|其它]TrueLife —— 我的世界服务器提高生存难度插件 让MineCraft更真实 [全版本]...
  10. docker geovis_GitHub - ThinkBlue1991/cronjob-operator