在重新回顧c語言資料結構時,在實現順序表和煉表時關於指標使用的區別讓我覺得很有趣
像在順序表中實現
struct seqlist
;
而我們在使用順序表時,往往在main函式中直接定義:
seqlist seqlist;
在後面對順序表的使用中,直接傳參,比如
initlist(&seqlist);
而在鍊錶中
typedef
struct sqlist
sqlist,*psqlist;
在後面的使用中,我們往往在main函式中定義psqlist *pnode。
在後面的函式傳參中,依然
initpslist(&pnode);
如果此時我們定義init函式的時候,引數為一級指標,則在引數傳遞過程中,當程式執行到initpslist時,會在堆疊中生成乙個臨時變數,在該函式中改變的是那個臨時變數的值,而當我們程式跳出該函式時,我們給他傳進去的實參值並沒有發生改變,所以在形參設定時,設定為二級指標,讓他們時參形參指向乙個地方,防止程式出錯 為什麼使用二級指標
設計乙個函式 void find1 char array,char search,char pa 要求 這個函式引數中的陣列array是以 0值為結束的字串,要求在字串array中查詢與引數search給出的字元相同的字元。如果找到,通過第三個引數 pa 返回array字串中首先碰到的字元的位址。如...
為什麼一定要使用二級指標,而一級為什麼就不行呢??
為什麼一定要使用二級指標,而一級為什麼就不行呢?不是說函式中傳遞指標,在函式中改變指標的值,就是在改變 實參中的資料資訊嘛?額。其實吧,上邊說的也對,可問題就在這塊了。問題是,在建立二叉樹的過程中,不是改變了形參的值,而是 改變了形參的指向 而推出該函式後,形參被釋放了,那麼為形參動態分配的空間,也...
指標與二級指標
int num 10 int p1 int p2 p1 指標的指向結構如下圖所示 0x4000 0x3000 p2 0x2000 p1 num p2 表示的是儲存p2指標的位址 p2 表示的是p2指向的位址,即指標p1存放的位址 p2 表示指標p2指向位址中所存的值,即指標p1指向的位址,即變數nu...