对作用域及引用的一个认识

今天在看书时写了这样一个函数:
#include
int& fn(int i)
{
 int a = i;
 return a;
}
void main()
{
 int b = 2,c;
 c = fn(b);
}
编译通过了可是被警告了,想了一下还是和作用域有关。

就上面这个函数来说,对于返回引用的函数fn(),未将a的值赋给一个临时变量,仅仅是将a的地址传递给了调用函数,用调用函数顺着地址找到了a的值并将这个值赋给了c。但是,fn()中的a的作用域在函数结束时结束,在正常情况下应该是找一个作用域尚未结束的变量的地址。故编译器会给一个警告。

但我还是有些不懂,作用域结束的变量编译器会给于怎样的处理,是收回空间彻底销毁,还是待程序结束全部后再一起回收,或是别的处理方法。还请大侠指教。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值