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

来源:互联网 发布:ps软件图片合成 编辑:程序博客网 时间:2024/04/28 14:16

今天在看书时写了这样一个函数:
#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的作用域在函数结束时结束,在正常情况下应该是找一个作用域尚未结束的变量的地址。故编译器会给一个警告。

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

原创粉丝点击