指针:存储地址的变量,指向内存的一个存储单元,指针是实体

引用:变量的别名,和原来的变量本质上是同一个东西

相同点:

  • 都是地址的概念(一个是某块内存的地址,一个时某块内存的别名)

不同点:

  • 存在常量指针,不存在常量引用
  • "sizeof(引用)"得到的是所指向对象的大小,而"sizeof(指针)"得到的是指针本身的大小
  • 两者的自增运算符意义不同
  • 引用在定义时必须初始化,并且不能再被改变
  • 指针可以为空
  • 指针可以有多级,但是引用只能是一级(例如"int **p"合法,"int &&a"不合法)
  • 引用是类型安全的,而指针不是(引用比指针多了类型检查)

指针与引用的函数传递:

指针传递的本质上是值传递,值传递过程中被调函数的形式参数作为被调函数的局部变量处理,即在栈中开辟了内存空间以存放由主调函数传进来的实参的值,从而成为了实参的一个副本,值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值(当然这里的实参变量指的是指针变量,而不是指针所指内存上的值)

而在引用传递过程中,被调函数的形式参数虽然也作为局部变量在栈中开辟了内存空间,但这时存放的是由主调函数放进来的实参变量的地址,被调函数对形参的任何操作都被处理成间接寻址,即通过栈中存放的地址访问主调函数中的实参变量,因此被调函数对形参做的任何操作都会影响主调函数中的实参变量

指针和引用的相同与不同相关推荐

  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 扩充 : ...

  10. 返回函数局部变量的指针和引用

    返回函数局部变量的指针和引用是不允许的,容易造成野指针.不管是通过返回值或者出参返回局部变量的指针都是不允许的. 但针对各种情况,可以具体研究一下返回函数指针和引用的异常情况. 例子1: #inclu ...

最新文章

  1. 论文解读 | 微信看一看实时Look-alike推荐算法
  2. 从MegaEase看云原生
  3. spark数据查询语句select_sparksql语句
  4. python图书馆管理系统实验报告_基于Python的图书馆业务报表自动生成研究
  5. 用flood测试web服务器响应时间,用Flood测试Web服务器响应时间(1)
  6. 等式数量--hash算法之除留余数法
  7. 易创课堂武汉站-NTES@百位创业者智慧众筹
  8. dojo中的dojo/dom-style
  9. mybatis多表新增如何获取主键ID
  10. javascript中String的fromCharCode()方法
  11. 正面管教PHP沙龙,正面管教沙龙体会
  12. Android学习----发行版本
  13. python虚拟环境打包deb_可以为python脚本创建deb包吗?
  14. Spark 机器学习中的线性代数库
  15. Vue 电商PC后台管理(ElementUI)
  16. java装箱和拆箱的意义_java的自动拆箱和装箱是每个程序员都要知道的
  17. npm 全局安装node module并查看安装路径
  18. 计算机财务管理期末考试题及答案,计算机财务管理期末考工资部分题目及答案...
  19. 杭电oj2029c语言答案,杭电oj2029
  20. node的学习过程(菜鸟)

热门文章

  1. python3.7安装步骤-python安装步骤_python 3.7.2安装教程
  2. python三本经典书籍-关于 Python 的经典入门书籍有哪些?
  3. 自学python好找工作么-学习python后好找工作吗
  4. 腾讯游戏人脸识别系统更新!刷脸的同时语音提示付款成功_游侠网 Ali213.net
  5. 为什么语音输入法始终没有在电脑上得以普及?
  6. css3禅密花园叫什么名字_CSS秘密花园:灵活的椭圆形
  7. Ajax实现搜索提示框~超级详细
  8. linux如何rpm更新内核,使用RPM包对RedHat进行内核升级
  9. 【链表】剑指offer:从尾到头打印链表
  10. Matlab的曲线拟合工具箱CFtool使用简介