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

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

今天在看书时写了这样一个函数:

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

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航