C語言 指標 「空指標」傳參問題

2021-10-20 19:56:12 字數 796 閱讀 4508

再談一談空指標傳參。寫平衡二叉樹時,因為傳遞進去了乙個結點,而結點指向空,所以無論其他地方怎麼改,都頻頻報錯。

對於普通指標,我們要分清如果乙個指標本身是null,那意味著它指向空;但是,指標也是資料,他的二級指標可不是null,而是這塊指標的位址。

void changep(int** p)

int main()

這裡寫乙個人類來舉例:

依然是報異常。

錯誤原因:

這裡的p雖然指向null,但他的位址是存在的。

而setage函式裡,形參也是指標,

他們倆是同一種型別。

所以本質上,這是乙個傳值傳參。

這段**的問題:

當函式執行完後,首先,p1是開闢在堆區的,沒有釋放;

其次,這是乙個傳值傳參,所以回到主函式後,p仍然是乙個空指標,

自然就沒有age一說了。

所以會報異常。

改法:還是使用二級指標,來對一級指標進行操作:

typedef struct people

people,*p;

//p就是結構體指標。

void setage(p* p1)

int main()

C語言指標傳參問題

void pointer int p intmain the p is0xbfd46498 addr is 1076599652,p is 22the p is0xbfd46498 addr is 1076599680,p is 22the p is0xbfd46498 addr is 107659...

指標傳參問題C

改變變數用一級指標,改變指標用二級指標 1 改變值 void fun int p void fun2 int p 改變變數用一級指標,改變指標用二級指標,main 2 改變指標 void getmem1 char s 想在函式中分配記憶體,再返回,徒勞無功 問題2 char getmemory vo...

C語言 函式傳參 傳值 傳指標 傳指標的指標

本文參考這兩篇文章 文章 一 文章二。在學習資料結構中建立單鏈表的時候,疑惑 已經定義了node,用到結構體指標的時候直接用 node就好了,為什麼還要再定義乙個 linklist呢,為什麼傳參的時候又要用linklist l呢?下面我們就來循序漸進,由淺入深來解決問題,這裡舉兩個例子作為比較。首先...