在編寫c/c++代碼時,調用函數的書寫讓程序變得整潔易讀,但是調用函數的返回值(局部變量的返回值,變量,結構體,數組等)也有注意事項。c/c++嚴禁返回局部變量的指針或引用。
其實函數的返回值的規則非常好記:
函數的返回值可以是數值和全局變量的指針或引用。
函數的返回值不能是局部對象或者是局部變量的指針或引用!!!
原因:
調用函數的局部變量是存在於棧中的,在執行完調用函數之后會將局部變量的空間釋放,也就是調用函數執行后局部變量將不存在與內存中。如果返回的是局部變量的指針或者是引用。返回給接收對象的是局部變量的地址,而這個地址的資源已經被釋放了,也就是接受的返回值都將是空值(因為被釋放),會出錯。
補充:局部變量返回指針或引用都是地址,而返回數值是值。(概念不同)