读书人

什么样的局部变量不能作为返回值?该怎

发布时间: 2012-02-14 19:19:19 作者: rapoo

什么样的局部变量不能作为返回值?
以下是我在csdn里看到的一个例子
============================
七、函数体中的指针或引用常量不能被返回

Char *func(void)

{

char str[]=”Hello Word”;

//这个是不能被返回的,因为str是个指定变量,不是一般的值,函数结束后会被注销掉

return str;

}

函数体内的指针变量并不会随着函数的消亡而自动释放

=============================
这段估计是有点问题,我的问题是:
什么样的局部变量不能作为返回值。或者再给我例子看看好吗?

[解决办法]
局部对象指针,引用不能返回
因为局部退出的时候,栈释放,局部对象
所以指针,引用指向的均无效数据了
[解决办法]
函数体内的指针变量并不会随着函数的消亡而自动释放,但是它所指向的地址会随着函数的消亡而面临随时被覆盖的危险。
[解决办法]
return语句返回指向“栈内存”的指针,该内存在函数结束时自动消亡

读书人网 >C++

热点推荐