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

C++引用类型变量

引用变量的主要用途是用作函数的形参。这样函数将使用原始数据,而不是副本。除指针之外,引用也为处理大型结构提供了一种非常方便的途径。

在C++中使用&符号标识引用。也就是说C++给&符号赋予了另一个含义,将其用来声明引用。

引用的声明格式如下,并且rats和rodents指向了相同的值和内存单元

int rats;
int& rodents = rats;

引用的简单使用示例 

#include <iostream>using namespace std;int main()
{int rats = 101;int& rodents = rats;cout << "rats = " << rats << " ,&rats = 0x"<< &rats<< endl;cout << "rodents = " << rodents <<" ,&rodents = 0x"<< &rodents <<endl;rodents++;cout << "rats = " << rats << " ,&rats = 0x" << &rats << endl;cout << "rodents = " << rodents << " ,&rodents = 0x" << &rodents << endl;return 0;
}

引用的初始化示例

#include <iostream>using namespace std;int main()
{int rats = 101;int& rodents = rats;cout << "rats = " << rats << " ,&rats = 0x"<< &rats<< endl;cout << "rodents = " << rodents <<" ,&rodents = 0x"<< &rodents <<endl;int bunnies = 50;rodents = bunnies;cout << "rats = " << rats << " ,&rats = 0x" << &rats << endl;cout << "rodents = " << rodents << " ,&rodents = 0x" << &rodents << endl;cout << "bunnies = " << bunnies << " ,&bunnies = 0x" << &bunnies << endl;return 0;
}

这里截取一段该程序运行的结果图,进行说明:必须在引用声明的时候进行初始化。不能在初始化完成之后进行赋值操作。这种操作看起来好像是正确的。但是rodent变量的值从101变成了50,但是仔细看来rats变量的值也从101变成了50。这是因为rats和dodents的地址是一样的。而这两个地址和bunnies变量不同。所以该操作就等于是进行了如下赋值:rats=bunnies,也就是说将bunniese变量的值赋给了rats变量。所以可以通过初始化声明来设置引用,但不能通过赋值来设置。

从指针方面来理解等价于这样的操作:

int rats = 101;
int* pt = &rats;
int& rodents = *pt;
int bunnies = 50;
pt = &bunnies;

rodents初始化为*pt从而让rodents指向了rats,接下来将pt改为bunnies,并不能改变这样的事实。即rodents的引用是rats;


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

相关文章:

  • verilogHDL仿真详解
  • Apache Sedona和Spark将geojson瓦片化例子
  • 2008-2019年各省城镇人口数据
  • NVIDIA Clara平台助力医学影像处理:编程案例与实践探索(上)
  • 操作手册:集成钉钉审批实例消息监听配置
  • Maven 仓库的分类
  • 深入了解 JavaScript 字符串方法:从字符获取到大小写转换
  • 如何使用非官方的根组件
  • c++习题36-奇数单增序列
  • 双指针——对撞指针与左右指针
  • Spring Boot集成Milvus和deeplearning4j实现图搜图功能
  • 提升质量:构建系统性的质量保证策略
  • java-web-day6-下-知识点小结
  • 构建生产级的 RAG 系统
  • GCC及GDB的使用
  • 自适应阻抗案例分析(上)
  • 基于SpringBoot+LayUI+Vue智能停车收费系统
  • 第三十三篇:TCP协议如何避免/减少网络拥塞,TCP系列八
  • 【工具】Charles对360浏览器抓包抓包
  • Nginx 迁移到 Caddy:一次完整的反向代理配置迁移实践
  • 美国技术论坛汇总
  • 滴滴面试:单表可以存200亿数据吗?单表真的只能存2000W,为什么?
  • PG数据库之视图详解
  • or-tools优化库记录
  • 数据结构:并查集
  • 不吹不黑,客观理性深入讨论国产服务器