函数返回局部变量的问题

1.函数可以返回局部变量

当函数的局部变量作为函数的返回值时,其实是不知道是谁(是程序?)会自动生成一个变量的副本即拷贝作为函数的返回值,而原有的局部变量将被销毁。

注意函数不可以返回局部变量的地址或者某个指针,以为当函数运行完了(这里改咋说),系统会回收这块地址,因此这个地址里面 的东西也就没有意义了。

静态变量可以返回指针。

2.

int a[] = {1, 2};

return a;

此时也会返回指针a的一个拷贝,若a的地址值为0x002345FC,则0x2345FC是能够成功返回的。当return执行完成后,a就要被销毁,也就是0x002345FC所指向的内存被回收了。如果这时候在函数外面,比如int p=*a;去地址0x002345FC取值,那得到的结果肯定是不对的。

返回局部变量的引用也是同样的道理吼吼吼。

学习自:http://www.cnblogs.com/Jezze/archive/2012/02/06/2340686.html

 

转载于:https://www.cnblogs.com/Cherrylalala/p/5049477.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值