1、將函式內部定義的變數用static修飾
由於static修飾的變數,分配在靜態記憶體區(類似於全域性變數區),函式返回時,並不會釋放記憶體,因此可以將要返回的變數加static修飾。
2、使用分配在堆上的記憶體
分配在堆上的記憶體主要指通過malloc、calloc、realloc等函式動態分配的記憶體,由於堆上的記憶體需要手動釋放,因此可以在使用完以後再釋放,這樣指標就不會指向未知。
注意:堆上的記憶體必須要用完即釋放,否則容易造成記憶體洩漏。
另外一般要返回指標的情況,也可以用全域性變數或者傳入指標引數代替。
C語言 返回指標的函式 指標函式
人之所以痛苦,那是因為你在成長。magic guo 函式可以返回整形 字串 實型值 無返回值 也可以返回指標型別的資料,即返回乙個記憶體位址,像這樣返回位址的函式成為指標函式。其概念與普通的函式一樣,只不過返回值的型別為指標型別。定義返回指標值的函式的一般形式為 型別名 函式名 引數列表 例如 in...
C語言函式返回指標問題
今天寫 時想用乙個函式返回乙個結構體指標,結果出錯了,然後做乙個總結。下面是出錯的示例 int fun 區域性變數是儲存在棧中的,隨著函式的結束,區域性變數也被釋放,當函式執行完畢後,指標指向的位址是存在的,但它指向的資料已經不在了。子函式想要返回指標,指標必須指向乙個確定的位址,一般有兩種 1 靜...
c語言 返回指標的函式
1 返回本地變數的位址是危險的,一旦離開這個函式本地變數就不存在了 實驗 int f void 產生這種結果的原因 本地變數在函式結束後,雖然值還存在記憶體中,但是不再受保護會,被之後的變數覆蓋掉。2 返回全域性變數或靜態本地變數的位址是安全的 3 返回在函式內malloc的記憶體是安全的,但是容易...