c語言 返回指標的函式

2021-10-14 15:25:20 字數 644 閱讀 8388

1、返回本地變數的位址是危險的,一旦離開這個函式本地變數就不存在了

實驗:int *f(void );

產生這種結果的原因:本地變數在函式結束後,雖然值還存在記憶體中,但是不再受保護會,被之後的變數覆蓋掉。

2、返回全域性變數或靜態本地變數的位址是安全的

3、返回在函式內malloc的記憶體是安全的,但是容易造成問題

4、最好的做法是返回傳入的指標

tips

1、不啊喲使用全域性變數來在函式間傳遞引數和結果

2、盡量避免使用全域性變數,早期的程式設計人員都是用全域性變數,因為受彙編的影響(沒有本地變數用)

豐田汽車的案子(大量使用全域性變數)

3、使用全域性變數和靜態本地變數的函式是執行緒不安全的(在多執行緒下不安全)

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

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

C語言函式返回指標問題

今天寫 時想用乙個函式返回乙個結構體指標,結果出錯了,然後做乙個總結。下面是出錯的示例 int fun 區域性變數是儲存在棧中的,隨著函式的結束,區域性變數也被釋放,當函式執行完畢後,指標指向的位址是存在的,但它指向的資料已經不在了。子函式想要返回指標,指標必須指向乙個確定的位址,一般有兩種 1 靜...

C語言函式返回指標方法

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