指標作為函式引數 進行記憶體釋放 並置NULL

2021-09-02 07:13:21 字數 318 閱讀 6933

author:張繼飛

寫在前面,前面寫了**封裝free函式,但是呼叫封裝並退出後,指標並不為null,導致接下來以此作為判斷條件的時候就出現問題了。先前封裝函式為void _free_p_(void *ptr),通過分析,指標作為函式引數傳遞時只是傳遞了指標所指向的位址,將其賦給乙個臨時變數,修改的也是該位址的的內容,但是指標本身並沒有修改,置null也只是修改的臨時變數。所以需要利用雙重指標才能將它傳遞進去進行修改,例項如下。

#include

#include

void _free_p_(void **ptr)

int main(void)

指標作為函式引數

當指標作為函式引數時,對引數本身的修改並不影響原來的值,比如下面的 刪除鍊錶中第乙個值為item的結點。但是結果卻不正確。void delete node head,int item 這段 的問題是,第乙個引數是指標型別而head null修改的實際上是這個指標的乙個副本,所以不會對原來的指標產生效...

指標作為函式引數

臨近畢業,還有找工作的事情,繁忙之際還是堅持看一下c語言的知識,重點的地方或者不清楚的地方還是要記錄一下。本章以指標作為函式傳參來說一下學習心得,大部分內容源自c語言程式設計課本。首先從c語言中函式引數的傳遞方向說起,大家都知道,c語言中函式引數的傳遞方向是單向的,只能由主調函式的實參傳遞到被調函式...

函式指標作為函式引數

先來看看普通的指標 如果有 int a 那麼可以定義乙個 int p a 則p是乙個指向a的指標 定義指標用乙個比較粗淺的方法來說就是把原來的變數名換掉並且前面加星號,比如這裡就是把a換成p並且前面加星號,就定義了乙個可以指向a的指標 同理,如果要定義乙個指向函式的指標,那麼也只要把函式名做類似的處...