首页 > 其他分享 >指针和引用的区别

指针和引用的区别

时间:2023-02-20 11:47:47浏览次数:28  
标签:初始化 变量 指向 区别 传递 引用 指针

  • 指针是一个变量,存储的是一个地址,引用跟原来的变量实质上是同一个东西,是原变量的别名
  • 指针可以有多级,引用只有一级
  • 指针可以为空,引用不能为NULL且在定义时必须初始化
  • 指针在初始化后可以改变指向,而引用在初始化之后不可再改变
  • sizeof指针得到的是本指针的大小,sizeof引用得到的是引用所指向变量的大小
  • 当把指针作为参数进行传递时,也是将实参的一个拷贝传递给形参,两者指向的地址相同,但不是同一个变量,在函数中改变这个变量的指向不影响实参,而引用却可以。
  • 引用本质是一个指针,同样会占4字节内存
  • 引用在声明时必须初始化为另一变量。针声明和定义可以分开
  • 不存在指向空值的引用,必须有具体实体;但是存在指向空值的指针。

在传递函数参数时,什么时候该使用指针,什么时候该使用引用呢?

  • 需要返回函数内局部变量的内存的时候用指针,而返回局部变量的引用是没有意义的
  • 对栈空间大小比较敏感(比如递归)的时候使用引用。使用引用传递不需要创建临时变量,开销要更小
  • 类对象作为参数传递的时候使用引用,这是C++类对象传递的标准方式

标签:初始化,变量,指向,区别,传递,引用,指针
From: https://www.cnblogs.com/xiaoqing-ing/p/17136750.html

相关文章

  • 2.20 Q_Learning 和Sarsa 的区别
    二者都是基于Qtable的算法,其中Qlearning属于off-policy,Sarsa属于on-policy。算法伪代码:   二者主要区别是更新Qtable的方式不同:    ......
  • 微信小程序主包和分包的资源可以相互引用吗
    了解主包、分包整个小程序所有分包大小不超过20M;单个分包/主包大小不能超过2M主包:a.放置默认启动页面&&tabBar页面,以及一些分包需要用到的公共资源(如wxss、......
  • react中类组件和函数组件的理解?有什么区别
    react中类组件和函数组件的理解?有什么区别一、类组件类组件,顾名思义,也就是通过使用ES6类的编写形式去编写组件,该类必须继承React.Component如果想要访问父组件传递过来......
  • Basic和Bearer的区别
    token是在这里找的    Basic和Bearer有区别的   ......
  • 【C指针进阶】(C精髓)——对指针的更进一步深入剖析(图文近2w详解)
    @​​TOC​​前言我们都知道,指针是C语言中必不可少的一部分,是C语言的精髓所在,一个学习C语言的人如果不对指针有着深刻的理解,那还不算得上是真正入门,本篇文章整理了对于指针......
  • Unreal 各种指针类型是怎么回事
    引言读完本篇文章,你会了解为何UE中C++作为其开发语言,使用的指针,为何各式各样。你需要对UE有所了解,如果不了解也没关系,也可以看下这篇文章,就当了解一下最复杂的应用的系统......
  • 指针和字符串基础知识
    #include"stdafx.h"intmain(intargc,char*argv[]){//定义字符串的第一种方式,此种定义的字符可修改chara[]="it";a[0]='T';printf("%s\n",a);//定义字......
  • 指针和数组基础知识
    /*数组元素的访问方式1、数组名[下标]2、指针量名[下标]3、*(p+i)p+1,指针+1,则指针指向的地址加4*/#include"stdafx.h"voidchangeNum(int*array);intmain(intargc,char......
  • C指针基础
    ......
  • java的引用
    引用的概念每种编程语言都有自己操作内存中元素的方式,例如在c和c++里是通过指针,而java中通过引用,在java中一切都是对象,操作标识符就是一个引用判断是否回收某个对象引......