这是关于c++返回局部变量引用的问题,最后的静态变量输出结果我能懂,而前两种情况为什么会是这样的输出结果?我用的是visual c++ 2010学习版,我知道在c++中不能返回局部变量的引用,我想知道的是,例如打印的第一个数为什么不是100或者乱码?
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

已结题
关于c++中返回局部变量的引用
- ¥5
- c++
这是关于c++返回局部变量引用的问题,最后的静态变量输出结果我能懂,而前两种情况为什么会是这样的输出结果?我用的是visual c++ 2010学习版,我知道在c++中不能返回局部变量的引用,我想知道的是,例如打印的第一个数为什么不是100或者乱码?
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除
- 收藏 举报
2条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
qfl_sdu 2022-05-19 02:21关注在main函数中,先调用test01,先给a分配内存,在test01结束后,这块内存被回收,因为ref1是一个引用,正常情况来说,它应该也指向a所在的内存,但是,由于a所在的内存被回收了,那么就导致ref1指向了一个不存在的对象,这时候,系统会按随机给ref1分配一个内存,ref1的值是多少是不确定的(不同的编译器处理方式不一样,有的是顺序分配,有的是随机分配)
下面是我这里的运行结果,跟你图片中的结果是不一样的。也就侧面说明,ref1被随机分配了一个内存。本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 1无用举报 编辑记录微信扫一扫
点击复制链接分享
编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容
编辑
预览

轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2017-11-06 08:07回答 5 已采纳 题目中的例子是典型的野指针,这在C++语言中称为未定义行为(Undefined Behavior)。 未定义行为不确定会产生什么后果,如果刚好p所指向的内存地址合法可读且没有被别的地方引用,则亦有可
- 2016-02-13 17:01回答 10 已采纳 因为你定义了拷贝构造函数 ``` #include #include using namespace std; class Teacher { public:
- 2019-10-08 09:53回答 1 已采纳 从原理说,因为引用是主程序/函数共享的存储空间,生命周期随主程序,所以函数里直接写入就可以了,已经写入主程序里变量所在的内存。 而非引用,则函数里写入的变量和主程序的不在一起,所以需要一个复制的动作
- 2020-08-30 16:08在C++编程语言中,静态局部变量是一种特殊的变量类型,它结合了局部变量的作用域和全局变量的生命周期。下面将详细解析静态局部变量的概念、特点以及如何在实际编程中使用。 首先,静态局部变量的定义是在函数内部...
- 2017-04-12 16:54回答 2 已采纳 没有一种类型叫做xxx引用的类型,引用是修饰参数传递的,而不是修饰变量类型的。 好比public是修饰方法作用域的,也不是修饰类型的,你说pubic string和private string是不是
- 2018-04-17 22:49回答 5 已采纳 ``` 也可以用DP #include #include int main() { int count; int a[100];
- 2017-05-20 18:13回答 2 已采纳 1.return 之后会回收 2.局部变量的值不存在了,擦除我也不知道,但是肯定没有指向它的内存空间的那个变量了。也就是说相当于垃圾了,先回收再覆盖 3.得看在哪里创建对象,如果在test()函数
- 2023-08-22 09:13C++是支持面向对象编程的多范式语言,它允许开发者通过类和对象来组织代码,实现数据抽象、封装、继承和多态等特性。 接下来我们将详细讨论C++的内存模型,这是理解C++高级编程的关键。 1. 内存分区模型 C++程序...
- 2015-12-13 04:43回答 5 已采纳 string n("");初始化变量
- 2018-08-07 00:02回答 3 已采纳 在程序中两个变量的地方设置断点程序运行到断点处就可以查看局部变量的,如果你想同时看两,看到的不一定正确,因为函数内部局部变量在函数进入时在栈中保存,函数执行完后数据空间也就释放掉了。同时看两个可以使用
- 2020-03-04 04:04回答 1 已采纳 你声明的类没有构造函数,因此编译器认为需要其他函数来初始化成员变量,比如程序中的print。你一定要按照原来的写,加个构造函数吧。另外,建议最好还是把成员变量赋个初值吧
- 2023-05-29 09:01SecureCode的博客 引用的本质是一个指针常量。它在编译时被解析为一个指针,但在程序运行时它的行为类似于对被...在C++中,引用是一种非常方便的机制,可以使代码更加简洁易读,同时也能够避免指针所带来的一些问题,如越界、空指针等。
- 2018-06-08 05:55liitdar的博客 引用是C++语言对C语言的重要扩充。引用名是变量的一个别名,即它是某个已经存在变量的另一个名字,一旦把引用初始化为某个变量,就可以使用该引用名称来指向那个变量。如果把变量名称作为变量附属在内存位置中的一个...
- 2024-07-06 02:35流星雨爱编程的博客 在实际开发中,防御性编程不仅仅是一个技术问题,更是一种编码思维和习惯的养成。以下是一些具体的实践建议: 代码审查定期进行代码审查,发现潜在的错误和问题。通过集体智慧,可以提高代码的质量和健壮性。 编写...
- 2024-09-29 00:13夜泉_ly的博客 C++初阶,引用的详解
- 没有解决我的问题, 去提问
问题事件
联系我们(工作时间:8:30-22:00)
400-660-0108kefu@csdn.net在线客服
- 京ICP备19004658号
- 经营性网站备案信息
公安备案号11010502030143
- 营业执照
- 北京互联网违法和不良信息举报中心
- 家长监护
- 中国互联网举报中心
- 网络110报警服务
- Chrome商店下载
- 账号管理规范
- 版权与免责声明
- 版权申诉
- 出版物许可证
- ©1999-2025北京创新乐知网络技术有限公司