当前位置: 首页 > 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;

相关文章:

  • 【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提示词的种类与适合的任务
  • 专题学习网站开发流程/网络营销和传统营销的关系
  • 酒店网站制作/百度seo排名优化软件化
  • 4在线做网站/在线外链发布工具
  • wordpress博客模板seo/网站优化关键词价格
  • 分类信息网站如何做排名/百度搜索资源平台官网
  • 做交互的网站/网站优化技巧