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

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.函数的调用可以作为左值:

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

 

 

http://www.xdnf.cn/news/212.html

相关文章:

  • 记一次bat脚本的坑:中文注释导致脚本不能运行
  • 【无标题】作业
  • 不确定与非单调推理的基本概念
  • 新书速览|DeepSeek移动端AI应用开发:基于Android与iOS
  • win11系统截图的几种方式
  • SQL通用语法和注释,SQL语句分类(DDL,DML,DQL,DCL)及案例
  • 深入简出:KL散度、交叉熵、熵、信息量简介、交叉熵损失
  • Spring Boot自动配置原理深度解析:从条件注解到spring.factories
  • FFmpeg 硬核指南:从底层架构到播放器全链路开发实战 基础
  • Animated Raindrop Ripples In HLSL
  • 关于使用webpack构建的vue项目,如何使用windicss
  • Superduper - 在数据上构建端到端AI工作流和应用
  • Java面试中问单例模式如何回答
  • 我的gittee仓库
  • LLaMA Factory多模态微调实践:微调Qwen2-VL构建文旅大模型
  • 【国家能源集团生态协作平台-注册/登录安全分析报告】
  • 操作系统 第四章 文件管理
  • 施磊老师基于muduo网络库的集群聊天服务器(二)
  • 十天借助 Trae 实现 “幸运塔塔屋” 小程序时光记忆功能之旅
  • Xcode16 调整 Provisioning Profiles 目录导致证书查不到
  • 多模态记忆融合:基于LSTM的连续场景生成——突破AI视频生成长度限制
  • Orgin为柱状图加趋势线
  • 零基础上手Python数据分析 (17):[案例实战] 电商销售数据分析 - 从数据到洞察的全流程演练
  • Docker容器虚拟化存储架构
  • 关于EXPLAIN ANALYZE 工具的解析及使用方法(AI)
  • 《深入探秘JavaScript原型链与继承机制:解锁前端编程的核心密码》
  • 【python报错解决训练】
  • 阿里云镜像加速仅支持阿里云产品了
  • ChatUI vs Ant Design X 技术选型对比
  • MODBUS TCP 转 CANOpen