char *strA() { char str[] = "hello word"; return str; } 上述程序有什么問題? 簡單的來說,str是個局部變量的地址,作為返回值,有可能被提前回收。 那么局部變量可以作為函數的返回值嗎,這個問題不能一概而論。局部變量 ...
下面的內容是在C專家編程里面看到的,摘錄於此。 在C語言中,局部變量的作用域只在函數內部,在函數返回后,局部變量的內存就會被釋放。如果函數只是返回局部變量,那么這個局部變量會被復制一份傳回被調用處。但是如果函數返回的是局部變量的地址,那么就會報錯,因為函數只是把指針復制后返回了,但是指針指向的內容已經被釋放,這樣指針指向的內容就是不可預料的內容,程序就會出錯。准確的來說,函數不能通過返回指向棧內存 ...
2020-08-02 18:42 0 598 推薦指數:
char *strA() { char str[] = "hello word"; return str; } 上述程序有什么問題? 簡單的來說,str是個局部變量的地址,作為返回值,有可能被提前回收。 那么局部變量可以作為函數的返回值嗎,這個問題不能一概而論。局部變量 ...
一般的來說,函數是可以返回局部變量的。 局部變量的作用域只在函數內部,在函數返回后,局部變量的內存已經釋放了。因此,如果函數返回的是局部變量的值,不涉及地址,程序不會出錯。但是如果返回的是局部變量的地址(指針)的話,程序運行后會出錯。因為函數 ...
一、函數返回值 說到返回值,相信大家肯定都認識,沒錯,就是return。 所謂返回值可以這樣理解:函數外部的代碼要想獲取函數的執行結果,就可以在函數里用return語句把結果返回。 那具體怎么用呢?接着往下看: 注意: 1、函數在執行過程中只要遇到 ...
函數的局部變量用作返回值時,會生成一個局部變量的拷貝用作返回值,之后局部變量會被系統回收,函數不能返回局部變量的地址,因為如果返回局部變量的地址,系統回收后,指針指向的內容就無意義了,但是對於靜態變量也可以返回其指針。 #include "stdio.h" int ...
目錄 1. 不可返回的局部變量 1.1 函數不能返回指向棧內存的指針 2 可返回的局部變量 2.1 返回局部變量本身 2.2 常量 2.3 靜態局部變量 2.4 堆內存中的局部變量 2.5 返回值 ...
函數不能返回指向棧內存的指針 原因:返回值是拷貝值,局部變量的作用域為函數內部,函數執行結束,棧上的局部變量會銷毀,內存釋放。 可返回的局部變量: 1. 返回局部變量本身 View Code 2.常量 ...
轉自:https://www.cnblogs.com/fanhaha/p/7117766.html 原因:返回值是拷貝值,局部變量的作用域為函數內部,函數執行結束,棧上的局部變量會銷毀,內存釋放。 可返回的局部變量: 1. 返回局部變量本身 2.常量 ...
轉載:http://www.cnblogs.com/ZJAJS/archive/2013/03/08/2949162.html 函數調用和局部變量 要研究函數的調用過程,先來看下面的一段代碼: 對於 z = Add(1, 2); 這一句 ...