什么样的局部变量不能作为返回值?该怎么处理
什么样的局部变量不能作为返回值?
以下是我在****里看到的一个例子
============================
七、函数体中的指针或引用常量不能被返回
Char *func(void)
{
char str[]=”Hello Word”;
//这个是不能被返回的,因为str是个指定变量,不是一般的值,函数结束后会被注销掉
return str;
}
函数体内的指针变量并不会随着函数的消亡而自动释放
=============================
这段估计是有点问题,我的问题是:
什么样的局部变量不能作为返回值。或者再给我例子看看好吗?
------解决方案--------------------
局部对象指针,引用不能返回
因为局部退出的时候,栈释放,局部对象
所以指针,引用指向的均无效数据了
------解决方案--------------------
函数体内的指针变量并不会随着函数的消亡而自动释放,但是它所指向的地址会随着函数的消亡而面临随时被覆盖的危险。
------解决方案--------------------
return语句返回指向“栈内存”的指针,该内存在函数结束时自动消亡
以下是我在****里看到的一个例子
============================
七、函数体中的指针或引用常量不能被返回
Char *func(void)
{
char str[]=”Hello Word”;
//这个是不能被返回的,因为str是个指定变量,不是一般的值,函数结束后会被注销掉
return str;
}
函数体内的指针变量并不会随着函数的消亡而自动释放
=============================
这段估计是有点问题,我的问题是:
什么样的局部变量不能作为返回值。或者再给我例子看看好吗?
------解决方案--------------------
局部对象指针,引用不能返回
因为局部退出的时候,栈释放,局部对象
所以指针,引用指向的均无效数据了
------解决方案--------------------
函数体内的指针变量并不会随着函数的消亡而自动释放,但是它所指向的地址会随着函数的消亡而面临随时被覆盖的危险。
------解决方案--------------------
return语句返回指向“栈内存”的指针,该内存在函数结束时自动消亡