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

在編寫c c 代碼時,調用函數的書寫讓程序變得整潔易讀,但是調用函數的返回值 局部變量的返回值,變量,結構體,數組等 也有注意事項。c c 嚴禁返回局部變量的指針或引用。 其實函數的返回值的規則非常好記: 函數的返回值可以是數值和全局變量的指針或引用。 函數的返回值不能是局部對象或者是局部變量的指針或引用 原因: 調用函數的局部變量是存在於棧中的,在執行完調用函數之后會將局部變量的空間釋放,也就是 ...

2016-12-05 21:33 0 6134 推薦指數:

查看詳情

C++中如何在函數中返回局部變量指針/引用/地址?

01 不能直接返回局部變量引用/地址 C++有時候還挺傻的,比如調用函數的時候,我就想返回一個局部變量引用指針(常想用於返回新建的數組/對象),是不正確的。 比如下面這段代碼,用指針存儲變量 \(a\) 的地址並返回(直接返回 \(a\) 的地址的話,在編譯器那關就過 ...

Wed Jul 22 06:01:00 CST 2020 0 2132
淺談C語言函數返回值--局部變量和局部變量地址

下面的內容是在C專家編程里面看到的,摘錄於此。 在C語言中,局部變量的作用域只在函數內部,在函數返回后,局部變量的內存就會被釋放。如果函數只是返回局部變量,那么這個局部變量會被復制一份傳回被調用處。但是如果函數返回的是局部變量的地址,那么就會報錯,因為函數只是把指針復制后返回了,但是指針指向 ...

Mon Aug 03 02:42:00 CST 2020 0 598
C++函數返回局部變量

目錄 1. 不可返回局部變量 1.1 函數不能返回指向棧內存的指針 2 可返回局部變量 2.1 返回局部變量本身 2.2 常量 2.3 靜態局部變量 2.4 堆內存中的局部變量 2.5 返回 ...

Tue Apr 14 23:44:00 CST 2020 0 652
C++函數返回局部變量

函數不能返回指向棧內存的指針 原因:返回值是拷貝值,局部變量的作用域為函數內部,函數執行結束,棧上的局部變量會銷毀,內存釋放。 可返回局部變量: 1. 返回局部變量本身 View Code 2.常量 ...

Wed Jul 05 01:42:00 CST 2017 0 5411
C++函數返回局部變量

轉自:https://www.cnblogs.com/fanhaha/p/7117766.html 原因:返回值是拷貝值,局部變量的作用域為函數內部,函數執行結束,棧上的局部變量會銷毀,內存釋放。 可返回局部變量: 1. 返回局部變量本身 2.常量 ...

Mon Dec 18 22:19:00 CST 2017 0 1513
C++函數返回局部指針變量

遇到過好幾次關於函數返回指針變量問題,有時候是可以的,有時候是不可以的,然后就混亂了。今天研究了下,結果發現原來和內存分配有關。 用下面的例子分析下吧: 這段p是局部指針,指向局部數組a,這種情況輸出為空或者奇怪字符串。 分析: a是局部數組,系統為其分配的是棧內存,test ...

Sat Sep 24 21:58:00 CST 2016 0 5211
函數返回局部變量/局部指針

c語言 返回局部變量 局部指針 局部數組 內存四區模型   討論這個問題之前,一定要理解堆區和棧區的工作原理,數據的存儲區域(參考內存四區模型),另外一定不要返回局部對象變量引用指針局部變量   局部變量局部自動變量和局部靜態變量,由於c返回的是值,因此返回一個 ...

Fri Dec 21 19:30:00 CST 2018 0 2055
new對象和局部變量的區別

1.new出來的對象在堆內存中;局部變量是跟着方法走的,在棧內存中 2.new出來的對象會在內存中持續存在,直到垃圾回收消失;局部變量在方法結束后,立刻出棧,消失 ...

Tue Mar 03 07:14:00 CST 2020 0 695
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM