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

C++引用

前言:

    在 C++ 中,引用(Reference) 是一种为变量或对象起别名的方式,它提供了对现有数据的间接访问。引用是 C++ 区别于 C 语言的重要特性之一,设计初衷是提高代码的安全性和可读性,同时避免指针的复杂性。

    在生活中,我们可能也会给一些同学起外号,以“张三”同学为例,我们可以叫他“啊三”,当我们叫到这个外号的时候就会自然而然的想到“张三”同学,”啊三”就是张三的别名。在语法层面上看,引用就是取别名

定义:

    引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它与引用的变量共用同一块内存空间

引用的核心特点:

  1. 别名特性:
    引用必须初始化,且一旦绑定到某个对象,就不可再指向其他对象。

  2. 底层实现:
    引用本质上是通过指针实现的,但语法上隐藏了指针的复杂性(如解引用操作 *)。

  3. 不可为空:
    引用必须绑定到一个有效的对象,不能像指针一样初始化为 nullptr 或 NULL

基本格式:

类型 & 引用变量名(对象名) = 引用实体

int a=0;
int&b=a;
//b就是a的别名
cout<<b<<endl;
b++;
cout<<a;
//运行结果:
0
1

引用的使用过程中权限的变化:(const)

权限可以缩小不可以放大

int y=0;
const int x=0;
//int&n=x;权限被放大,由x的只读放大到n的可读可写
const int&n=x;

//权限缩小,是引用规则允许的
const int&m=y;

//可以,不是权限的放大
//x拷贝给p,p的修改不影响x
int p=x;

//不可以,p2的改变可以影响*p1,而*p1被const修饰,不能改变
const int*p=&x;
int*p2=p1;

http://www.dtcms.com/a/37525.html

相关文章:

  • 【Deepseek+Browser-Use搭建 Web UI自动化】
  • AWS SDK for Java 1.x 403问题解决方法和原因
  • 【学习笔记】Kubernetes
  • React加TypeScript最新部署完整版
  • 系统定时器SysTick
  • Spring 源码硬核解析系列专题(七):Spring Boot 与 Spring Cloud 的微服务源码解析
  • 【前端进阶】07 http协议和前端开发有什么关系
  • springboot实现文件上传到华为云的obs
  • Android 12.0 第三方app接收不到开机广播问题的解决以及开机自启动功能实现一
  • Java+SpringBoot+Vue+数据可视化的音乐推荐与可视化平台(程序+论文+讲解+安装+调试+售后)
  • 为什么一个ip地址可以用浏览器打开,但是不能ping通
  • 算法题训练 ——— NC313 两个数组的交集
  • vscode中使用PlatformIO创建工程加载慢
  • 优选算法大集合(待更新)
  • 25.2.25补题
  • freetype封装
  • Java进阶学习笔记95——网络编程
  • langchain系列(五)- LangChain 的tool原理与代码实现
  • SpringSecurity获取当前登录用户信息
  • AI提示词的种类与适合的任务
  • DeepSeek开源周 Day02:从DeepEP开源趋势重新审视大模型Infra
  • WordPress Course Booking System SQL注入漏洞复现 (CVE-2025-22785)(附脚本)
  • 1分钟用DeepSeek编写一个PDF转Word软件
  • springboot志同道合交友网站设计与实现(代码+数据库+LW)
  • HTTP/HTTPS 服务端口监测的简易实现
  • 鸿蒙5.0实战案例:har和hsp的转换
  • 三、大模型微调的多种方法与应用场景
  • 搜索优化:微调模型与RAG技术的深度比较
  • 适配 AGP8.5 版本,各种问题(三)
  • vue3.0将后端返回的word文件流转换为pdf并导出+html2pdf.js将页面导出为pdf