C語言函式返回指標問題

2021-10-07 11:06:10 字數 362 閱讀 1936

今天寫**時想用乙個函式返回乙個結構體指標,結果出錯了,然後做乙個總結。

下面是出錯的示例:

int

*fun()

區域性變數是儲存在棧中的,隨著函式的結束,區域性變數也被釋放,當函式執行完畢後,指標指向的位址是存在的,但它指向的資料已經不在了。

子函式想要返回指標,指標必須指向乙個確定的位址,一般有兩種

1)靜態變數(全域性靜態或區域性靜態),這種變數不會隨著子函式的結束而被釋放,因為它存在靜態儲存區

2)動態申請的記憶體,動態申請的記憶體必須手動釋放,也不會隨著子函式的結束而被釋放。

可以採用把指標以形參的方式傳遞給子函式,以此來獲取子函式的執行結果。

C語言 返回指標的函式 指標函式

人之所以痛苦,那是因為你在成長。magic guo 函式可以返回整形 字串 實型值 無返回值 也可以返回指標型別的資料,即返回乙個記憶體位址,像這樣返回位址的函式成為指標函式。其概念與普通的函式一樣,只不過返回值的型別為指標型別。定義返回指標值的函式的一般形式為 型別名 函式名 引數列表 例如 in...

c語言 返回指標的函式

1 返回本地變數的位址是危險的,一旦離開這個函式本地變數就不存在了 實驗 int f void 產生這種結果的原因 本地變數在函式結束後,雖然值還存在記憶體中,但是不再受保護會,被之後的變數覆蓋掉。2 返回全域性變數或靜態本地變數的位址是安全的 3 返回在函式內malloc的記憶體是安全的,但是容易...

C語言函式返回指標方法

1 將函式內部定義的變數用static修飾 由於static修飾的變數,分配在靜態記憶體區 類似於全域性變數區 函式返回時,並不會釋放記憶體,因此可以將要返回的變數加static修飾。2 使用分配在堆上的記憶體 分配在堆上的記憶體主要指通過malloc calloc realloc等函式動態分配的記...