typedef struct Node{int elem;struct node * next;}node,*LinkList;對於LinkList L: L是指向定義的node結構體的指標,可以用->運算子來訪問結構體成員,即L->elem,而(*L)就是個Node型的結構體了,可以用點運算子訪問該結構體成員,即(*L).elem;對於LinkList *L:L是指向定義的Node結構體指標的指標,所以(*L)是指向Node結構體的指標,可以用->運算子來訪問結構體成員,即(*L)->elem,當然,(**L)就是Node型結構體了,所以可以用點運算子來訪問結構體成員,即(**L).elem;在連結串列操作中,我們常常要用連結串列變數作物函式的引數,這時,用LinkList L還是LinkList *L就很值得考慮深究了,一個用不好,函式就會出現邏輯錯誤,其準則是:如果函式會改變指標L的值,而你希望函式結束呼叫後儲存L的值,那你就要用LinkList *L,這樣,向函式傳遞的就是指標的地址,結束呼叫後,自然就可以去改變指標的值;而如果函式只會修改指標所指向的內容,而不會更改指標的值,那麼用LinkList L就行了;下面說個具體例項吧!#include
typedef struct Node{int elem;struct node * next;}node,*LinkList;對於LinkList L: L是指向定義的node結構體的指標,可以用->運算子來訪問結構體成員,即L->elem,而(*L)就是個Node型的結構體了,可以用點運算子訪問該結構體成員,即(*L).elem;對於LinkList *L:L是指向定義的Node結構體指標的指標,所以(*L)是指向Node結構體的指標,可以用->運算子來訪問結構體成員,即(*L)->elem,當然,(**L)就是Node型結構體了,所以可以用點運算子來訪問結構體成員,即(**L).elem;在連結串列操作中,我們常常要用連結串列變數作物函式的引數,這時,用LinkList L還是LinkList *L就很值得考慮深究了,一個用不好,函式就會出現邏輯錯誤,其準則是:如果函式會改變指標L的值,而你希望函式結束呼叫後儲存L的值,那你就要用LinkList *L,這樣,向函式傳遞的就是指標的地址,結束呼叫後,自然就可以去改變指標的值;而如果函式只會修改指標所指向的內容,而不會更改指標的值,那麼用LinkList L就行了;下面說個具體例項吧!#include