c/c++不能返回局部对象和局部变量的指针或引用解释
在编写c/c++代码时,调用函数的书写让程序变得整洁易读,但是调用函数的返回值(局部变量的返回值,变量,结构体,数组等)也有注意事项。c/c++严禁返回局部变量的指针或引用。
其实函数的返回值的规则非常好记:
函数的返回值可以是数值和全局变量的指针或引用。
函数的返回值不能是局部对象或者是局部变量的指针或引用!!!
原因:
调用函数的局部变量是存在于栈中的,在执行完调用函数之后会将局部变量的空间释放,也就是调用函数执行后局部变量将不存在与内存中。如果返回的是局部变量的指针或者是引用。返回给接收对象的是局部变量的地址,而这个地址的资源已经被释放了,也就是接受的返回值都将是空值(因为被释放),会出错。
补充:局部变量返回指针或引用都是地址,而返回数值是值。(概念不同)