再談一談空指標傳參。寫平衡二叉樹時,因為傳遞進去了乙個結點,而結點指向空,所以無論其他地方怎麼改,都頻頻報錯。
對於普通指標,我們要分清如果乙個指標本身是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呢?下面我們就來循序漸進,由淺入深來解決問題,這裡舉兩個例子作為比較。首先...