news 2026/6/26 1:37:01

C++引用的示例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++引用的示例

文章目录

  • 1、引用的定义和使用
  • 2、引用的本质
  • 3、引用作为函数参数
  • 引用的地址

1、引用的定义和使用

#include<iostream>intmain(){intx=10;int&a=x;int&b=x;a=11;b=12;std::cout<<x<<std::endl;//12std::cout<<a<<std::endl;//12std::cout<<b<<std::endl;//12std::cout<<"Hello World!\n";}

语法是:类型& 变量名=值

  • a、b都是x的引用,是x的别名。
    对a、b、x任一的修改都是修改同一个地址的值,即变量x的值。
  • 创建引用变量a、b时,必须赋值(初始化)。
  • a、b初始化后,永远是x的引用,无法再改变为其他变量的引用。
  • 不存在NULL引用。一定是具有合法地址的变量的引用。

2、引用的本质

本质是指针。只是编译器层面的语法处理,编译后会变成指针的写法。

intx=1;int&a=x;//编译器处理为:int * const aref = &x;a=10;//编译器处理为:*aref = 10;//其中aref是编译器起的名字,用户不可知。

本质是处理成指针常量/常指针。就是指向初始化后不能改变的指针。

所以一个引用在内存中是占用8个字节存储(就是按指针的存储):

#include<iostream>classPerson{int&a;int&b;};intmain(){//通过sizeof获取Person数据类型占用的内存空间std::cout<<sizeof(Person)<<std::endl;//16}

有时编译器会将引用优化掉,完全用所引用的变量,不会额外创建指针常量。

3、引用作为函数参数

#include<iostream>voidadd(int&a){a++;}intmain(){intx=1;add(x);std::cout<<x<<std::endl;//2}

引用作为函数参数时,相当于传的是实参的指针,也就能在函数中通过改变形参来改变实参的值。

在一些场景代替指针,具有更好的可读性和实用性。

引用的地址

#include<iostream>intmain(){intx=10;int&a=x;int&b=x;a=11;b=12;std::cout<<&x<<std::endl;std::cout<<&a<<std::endl;std::cout<<&b<<std::endl;std::cout<<"Hello World!\n";}

&获取引用的地址,并不是获得编译器内部分配的指针常量的地址,而是编译器将&a处理为返回所引用的x的地址。
所以&a&x的值相同,都是x的地址。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 1:35:38

Random Forest中等项目落地实战:从数据清洗到部署验证

1. 这不是一篇“讲随机森林原理”的科普文&#xff0c;而是一份中等难度项目落地的完整复盘你点开这篇内容&#xff0c;大概率不是想听“随机森林由多棵决策树组成”这种教科书定义——你手头正卡在一个中等复杂度的实际项目里&#xff1a;数据有10~50个特征&#xff0c;样本量…

作者头像 李华
网站建设 2026/6/26 1:35:13

1.5 认知重构:像设计航天软件一样,引入“容错”与“冗余”

1996年6月4日&#xff0c;法属圭亚那库鲁航天中心。 欧洲航天局耗资70亿美元研制的阿丽亚娜5型火箭&#xff0c;在发射升空后仅仅37秒&#xff0c;突然偏离预定轨道&#xff0c;在空中解体爆炸。火箭上搭载的四颗价值连城的科学卫星&#xff0c;在浓烟和火光中化为碎片。 事故调…

作者头像 李华
网站建设 2026/6/26 1:35:07

每日一技第五天——上帝视角看Java:反射是如何扒开类的底裤的?

一、从一个让人抓狂的场景说起先想象这样一个需求&#xff1a;你正在开发一个支付系统&#xff0c;支持微信支付和支付宝支付。老板说&#xff1a;“把支付方式写在配置文件里&#xff0c;我要能做到不重新编译代码就能切换支付渠道。”你写了两个类&#xff1a;WechatPay 和 A…

作者头像 李华
网站建设 2026/6/26 1:33:05

react源码学习之Scheduler

简介 Scheduler主要用于调度执行Reconciler 组成 api unstable_scheduleCallbackunstable_cancelCallback 调度回调有两种方式 setTimeout通过MessageChannel Task 为任务调度单元 type Task {id: number,callback: Callback | null,priorityLevel: PriorityLevel,st…

作者头像 李华
网站建设 2026/6/26 1:29:36

HDFS javaAPI-windows的IDEA中java文件在linux中的hadoop平台运行

运行前提1、windows能ping通虚拟机IP地址【虚拟机网络改为桥接模式&#xff0c;改为固定IP】2、Linux开放端口&#xff1a;9000,9870,8088【使用windows的 PowerShell&#xff0c;执行&#xff1a;Test-NetConnection IP地址 -Port 9000&#xff0c;需要修改linux中hadoop配置文…

作者头像 李华
网站建设 2026/6/26 1:28:16

X浏览器:免费又极简,建议收藏 !

手机上自带的浏览器要么臃肿要么广告满天飞&#xff0c;用着糟心。之前一直用夸克&#xff0c;后来广告越来越多就换了&#xff0c;折腾了好几个才发先X浏览器&#xff0c;用到现在没再换过。这浏览器安装包才2MB&#xff0c;启动基本是秒开&#xff0c;装完占的存储也小德离谱…

作者头像 李华