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

4.18日学习--引用

引用是变量的别名,它为已存在的变量提供了一个新的名称,对引用的操作实际上就是对其所引用变量的操作。引用在定义时必须初始化,且一旦初始化后就不能再引用其他变量。

#include <iostream>
using namespace std;//引用做函数的返回值//1、不要返回局部变量的引用int& test01()
{int a = 10; //局部变量存放在四区中的 栈区return a;
}//2、函数的调用可以作为左值int& test02()
{static int a = 10; //静态变量,存放在全局区,全局区上的数据在程序结束后系统释放return a;
}int main() {int &ref = test01();cout << "ref = " << ref << endl;//第一次结果正确,是因为编译器做了保留cout << "ref = " << ref << endl;//第二次结果错误,因为a的内存已经释放int& ref2 = test02();cout << "ref2 = " << ref2 << endl;cout << "ref2 = " << ref2 << endl;cout << "ref2 = " << ref2 << endl;test02() = 1000;//如果函数的返回值是引用,这个函数调用可以作为左值cout << "ref2 = " << ref2 << endl;cout << "ref2 = " << ref2 << endl;return 0;}

代码验证: 

引用做函数返回值的规则

1.不要返回局部变量的引用 :

局部变量存储在栈区,当函数执行结束后,栈区的局部变量所占用的内存会被释放。如果返回局部变量的引用,那么引用将指向一个已经被释放的内存地址,这会导致未定义行为。

2.函数的调用可以作为左值:

静态变量存储在全局区,全局区上的数据在程序结束后才会被系统释放。因此,返回静态变量的引用是安全的,因为该变量的内存不会在函数结束时被释放。

 

 

相关文章:

  • LINUX418 加载YUM源 wireshark ping程序 解析
  • C++: 类和对象(中)
  • 从代码学习深度学习 - 小批量随机梯度下降 PyTorch 版
  • 从人工到智能:外呼系统如何重构企业效率新生态
  • RFID图书管理系统如何重构数字化仓储管理新生态
  • 架构师面试(三十二):注册中心数据结构
  • 米托蒽醌和阿克拉霉素 髓外 aml 疗效
  • 过去十年前端框架演变与技术驱动因素剖析
  • 从PDF到播客:MIT开发的超越NotebookLM的工具
  • 获取视频封面
  • 深度学习基础--CNN经典网络之InceptionV3详解与复现(pytorch)
  • leetcode 309. Best Time to Buy and Sell Stock with Cooldown
  • VSCODE插值表达式失效问题
  • 在ubuntu中VsCode使用python docker容器
  • 「数据可视化 D3系列」入门第八章:动画效果详解(让图表动起来)
  • 探索Spring Boot Web模块:设计思想与技术实现
  • 【字节跳动AI论文】海姆达尔:生成验证的测试时间扩展
  • 企业数字化转型:如何制定清晰的战略?
  • 2025大模型推理框架选型全指南:高并发推理架构深度拆解
  • vs2019配置点云库PCL1.12.1
  • 我国已顺利实施20次航天员出舱活动,达到国际先进水平
  • 秦洪看盘|热点凌乱难抑多头雄心
  • 智飞生物一季度营收下滑79%,连续三个季度亏损,称业绩波动与行业整体趋势一致
  • 竹子砍了地却种不上,贵州赤水被指“整改复耕”存形式主义
  • GDP增长6.0%,一季度浙江经济数据出炉
  • 上海黄金交易所:贵金属价格波动剧烈,提示投资者做好风险防范