c/c++不能返回局部對象和局部變量的指針或引用解釋


在編寫c/c++代碼時,調用函數的書寫讓程序變得整潔易讀,但是調用函數的返回值(局部變量的返回值,變量,結構體,數組等)也有注意事項。c/c++嚴禁返回局部變量的指針或引用。

其實函數的返回值的規則非常好記:

  函數的返回值可以是數值和全局變量的指針或引用。

  函數的返回值不能是局部對象或者是局部變量的指針或引用!!!

原因:

  調用函數的局部變量是存在於棧中的,在執行完調用函數之后會將局部變量的空間釋放,也就是調用函數執行后局部變量將不存在與內存中。如果返回的是局部變量的指針或者是引用。返回給接收對象的是局部變量的地址,而這個地址的資源已經被釋放了,也就是接受的返回值都將是空值(因為被釋放),會出錯。

 

補充:局部變量返回指針或引用都是地址,而返回數值是值。(概念不同)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM