当前位置: 首页 > news >正文

指针和引用的区别

指针和引用是C++中的两个重要概念,它们虽然在功能上有一些相似之处,但在使用方式和底层实现上有明显的区别。以下是它们的主要区别:

  1. 定义方式

    • 指针:指针是一种变量,用于存储另一个变量的地址。可以通过*操作符访问指针指向的内存地址。
      int a = 10;
      int* ptr = &a;  // ptr是一个指针,存储了变量a的地址
      
    • 引用:引用是一个变量的别名,创建时必须进行初始化,之后引用不能改变指向。
      int a = 10;
      int& ref = a;  // ref是a的引用,即a的别名
      
  2. 使用方式

    • 指针:指针可以重新指向其他内存地址,也可以是nullptr,表示不指向任何有效内存。
      int b = 20;
      ptr = &b;  // ptr现在指向变量b
      ptr = nullptr;  // ptr现在不指向任何有效内存
      
    • 引用:引用一旦绑定到某个变量后,就不能再更改指向,并且引用不能为null
      int b = 20;
      ref = b;  // ref现在的值是20,但ref仍然是a的引用,不能改变引用的绑定
      
  3. 内存占用

    • 指针:指针本身占用内存空间,因为它存储了一个内存地址(通常为4或8个字节,取决于系统)。
    • 引用:引用本质上是一个别名,不占用额外的内存空间,引用直接作用于原变量。
  4. 运算

    • 指针:指针可以进行算术运算,比如指针加减,遍历数组等。
      ptr++;  // 将指针移到下一个地址
      
    • 引用:引用不支持指针的算术运算,只能直接访问或操作所引用的变量。
  5. 函数参数传递

    • 指针:通过指针传递参数,函数可以修改实参的值。
      void modify(int* ptr) {*ptr = 20;
      }
      
    • 引用:通过引用传递参数,同样可以修改实参的值,但语法更简洁。
      void modify(int& ref) {ref = 20;
      }
      

总结:

  • 指针是可以指向不同对象的变量,并且可以进行地址运算。
  • 引用则是某个对象的别名,一旦初始化后不能再改变指向,也不能是空的。

在实际开发中,引用更适合做函数参数和返回值,因为它们语义更明确且使用更简单。而指针则更灵活,适用于需要动态分配内存或需要遍历数据结构的场景。

推荐学习 https://xxetb.xetslk.com/s/p5Ibb


http://www.mrgr.cn/news/2423.html

相关文章:

  • MySQL常用方法速通
  • python下载b站视频
  • 大数据量实现滚动分页-vue3+element-plus实现方式
  • 后端Java秋招面试中的自我介绍需要说什么?
  • nginx核心配置示例
  • Go语言基础--switch
  • 第3章处理机调度与死锁
  • 树莓派开发笔记09-树莓派的UDP通信实验
  • 【人工智能】Transformers之Pipeline(十一):零样本图片分类(zero-shot-image-classification)
  • 内网拓扑可视化及管控技术
  • TypeScript学习笔记1---认识ts与js的异同、ts的所有数据类型详解
  • .Net插件开发开源框架
  • WPF学习(8) --Windows API函数的使用
  • 探索 HarmonyOS 的层叠布局:灵活的 Stack 容器
  • 原神4.8版本抽到角色和重点培养数据表
  • 高性能企业WEB服务器
  • 水利机械5G智能制造工厂物联数字孪生平台,推进制造业数字化转型
  • OpenCV4特征匹配
  • 快速上手 iOS Protocol Buffer
  • Xshell 连接服务器