c/c++不能返回局部对象和局部变量的指针或引用解释

在编写c/c++代码时,调用函数的书写让程序变得整洁易读,但是调用函数的返回值(局部变量的返回值,变量,结构体,数组等)也有注意事项。c/c++严禁返回局部变量的指针或引用。

其实函数的返回值的规则非常好记:

  函数的返回值可以是数值和全局变量的指针或引用。

  函数的返回值不能是局部对象或者是局部变量的指针或引用!!!

原因:

  调用函数的局部变量是存在于栈中的,在执行完调用函数之后会将局部变量的空间释放,也就是调用函数执行后局部变量将不存在与内存中。如果返回的是局部变量的指针或者是引用。返回给接收对象的是局部变量的地址,而这个地址的资源已经被释放了,也就是接受的返回值都将是空值(因为被释放),会出错。

 

补充:局部变量返回指针或引用都是地址,而返回数值是值。(概念不同)

posted @ 2016-12-05 21:33  436酱油哥  阅读(8126)  评论(0编辑  收藏  举报