您的位置:首頁>正文

C/C++能否返回區域變數

1.C/C++能返回static修飾的區域變數(因為在靜態存儲區)

2.C/C++能返回用 new 創建的區域變數(因為在堆空間)

3.C/C++能返回指向常量的指標, 但不能返回指向普通區域變數的指標, 否則返回的是亂碼(因為後者創建在棧空間)

4.C/C++能返回區域變數的值

預備知識: 1.當函數結束時, 在棧空間的該函數的普通區域變數會被釋放(清除)。

2.普通的區域變數是在 棧空間 生成的, 所以但程式結束時, 區域變數也會被清空。

1.C/C++能返回static修飾的區域變數(因為在靜態存儲區)

用static 修飾的變數是存儲在靜態存儲區, 而不是棧空間

下面的例子是錯誤的。

C語言C++學習交流496926338

因為 p 相當一個陣列頭指標, 他的內容都是在棧空間的, 所以當 return p後, p是能成功傳出去的, 但其指向的內容已經被棧空間清除了, 因此列印的是亂碼。

而用static修飾後, 就能成功列印出hello world, 因為static修飾, 就表示修飾的物件是創建在靜態存儲區, 不受棧空間影響

C語言C++學習交流496926338

2.C/C++能返回用 new 創建的區域變數(因為在堆空間)

用 new 創建的變數是存儲在 堆空間

C語言C++學習交流496926338

3.C/C++能返回指向常量的指標, 但不能返回指向普通區域變數的指標(因為後者創建在棧空間)

C語言C++學習交流496926338

下面的代碼是指標指向普通區域變數的情況:

C語言C++學習交流496926338

4.C/C++能返回區域變數的值

C語言C++學習交流496926338

喜歡的話關注收藏評論轉發一波 比心麼麼噠!加入我們C語言C++學習交流 壹 496926338群內有大量的專案開發和新手教學視頻千人大群等著你來加入。


在函數返回中, return 後跟的東西是一定能返回出去的, 這就是 區域變數的返回能值返回的原因, 而位址返回(也就是指標)則看情況, 要看他所指向的地方是否已經被釋放掉。

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示