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

指针和引用的区别

时间:2024-04-23 10:44:52浏览次数:28  
标签:传参 初始化 指向 区别 对象 引用 指针

一,区别

  1. 是否需要初始化
  • 指针不需要初始化,但是最好初始化
  • 引用必须初始化,不能初始化为空对象,初始化后不能改变
  1. 是否允许为空
  • 指针允许
  • 引用不允许
  1. 是否直接操作对象
  • 指针通过某个指针变量指向一个对象,对所指向的对象进行间接操作
  • 引用是目标对象的别名,对引用的操作就是直接对目标对象操作
  1. 是否是对象
    指针是对象,指针是有地址的,可以定义指针的指针
    引用不是对象,欸有实际地址,不能定义引用指针,也不能定义引用的引用

二,作用

  1. 引用的作用
  • 传参,避免内存分配,以及对象数据的复制
  • 函数返回值,避免对象数据的复制
  1. 指针的作用
  • 传参,避免对象数据复制
  • 多态(基类指针指向子类)
  • 代码复用(不用代码模块调用同一个对象)

标签:传参,初始化,指向,区别,对象,引用,指针
From: https://www.cnblogs.com/songyaxuan/p/18152318

相关文章

  • vue2和vue3的区别
    一.根节点不同vue2中必须要有根标签。vue3中可以没有根标签,会默认将多个根标签包裹在一个fragement虚拟标签中,有利于减少内存。二.组合式API和选项式API在vue2中采用选项式API,将数据和函数集中起来处理,将功能点切割了当逻辑复杂的时候不利于代码阅读。在vue3中采用组合式AP......
  • 假设该链表只给出了头指针 head。在不改变链表的前提下,请设计一个尽可能高效的算法,查
    假设该链表只给出了头指针head。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k(k为正整数)个位置上的结点。若查找成功,算法输出该结点的data值,并返回1;否则,只返回0。/********************************************************************* 函数名称......
  • 《渣男代码历险记》第四 双指针怪
    已知一个带有表头结点的单链表,结点结构为:data next假设该链表只给出了头指针head。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k(k为正整数)个位置上的结点。若查找成功,算法输出该结点的data值,并返回1;否则,只返回0。要求:(1)描述算法的基本设......
  • 安卓测试跟ios 测试有什么区别?
    一、概览安卓测试和iOS测试之间有一些区别,这些区别主要是由于两个平台的技术架构、开发工具和生态系统的差异导致的。以下是一些主要的区别: 二、具体内容开发语言和框架:安卓应用通常使用Java、Kotlin或者其他JVM语言进行开发,而iOS应用则使用Objective-C或Swift......
  • Oracle JDK 和 OpenJDK 有什么区别?
    OpenJDK是Sun在2006年末把Java开源而形成的项目,这里的“开源”是通常意义上的源码开放形式,即源码是可被复用的,例如IcedTea、UltraViolet都是从OpenJDK源码衍生出的发行版。OracleJDK采用了商业实现,而OpenJDK使用的是开源的FreeType。当然,“相同”是建立在两者共有的组件基础上的,O......
  • RPC接口和http接口的区别
    最本质的区别,就是RPC主要是基于TCP/IP协议的,而HTTP服务主要是基于HTTP协议的HTTP协议是在传输层协议TCP之上的,所以效率来看的话,RPC当然是要更胜一筹RPC服务RPC架构一个完整的RPC架构里面包含了四个核心的组件,分别是Client,Server,ClientStub以及ServerStub,这个S......
  • 函数指针
    一、函数指针函数指针:指向存放函数空间首地址的指针变量函数指针的定义方式:函数返回值类型(*指针变量名)(函数参数列表);为了方便使用:typedef函数返回值类型(*指针变量名)(函数参数列表);typedefint(*ptrFunc)(int,int);//typedef定义了一种ptrFunc的类型,并定义这种类型为指向......
  • electron-log 与console.log的区别是什么?
    electron-log与console.log都是用于在应用程序中记录信息的工具,但它们在功能、用途和应用场景上有显著的区别:console.log:内置日志工具:console.log是JavaScript语言提供的内置日志输出函数,适用于所有支持JavaScript的环境,包括浏览器和Node.js(包括Electron)。控制......
  • 抽象类和接口有什么区别
    接口和抽象类都是用来定义对象的公共行为的,两者本身不能实例化,但二者有以下7点不同:1.定义关键字不同:接口使用关键字interface来定义,抽象类使用关键字abstract来定义。2.继承或实现的关键字不同:接口使用implements关键字定义其具体实现,抽象类使用extends关键字实现继承。......
  • 在Linux中,发行版和内核有什么区别?
    在Linux世界中,内核版本和发行版之间的区别是理解Linux操作系统生态体系的关键点。以下是两者之间详尽的区别:1.Linux内核:内核是Linux操作系统的核心组件,它是操作系统中最基础的部分,负责管理和调度计算机硬件资源,如处理器、内存、硬盘驱动器和其他外设。它的主要职责包括:硬件抽......