Pointer to Pointer
Pointer to pointer 有一個很重要的應用 - 更改變數的 life time : 因為C裡面的函式都是 ==call by value==,可以說在 function 裡面操作的 parameter 都是原始 object 的「複本」,出了function後原本object的value還是不會改變。 因此很多時候我們必須寫func(&var)傳入 object 的地址,讓 function 內部可以更改原始 object 的內容。
舉例來說,如果是一個linked list要刪除head,有兩種做法
list = list_del_head(list);
list_del_head(&list);
但是第一種作法很麻煩,因為你需要每次都去更新你的linked list的指標。
而第二種做法就可以很好的==實現ADT(Abstract Data Type)== - 你可以不用管function裡面的實作細節,你只需要知道「list變數中紀錄的head被刪除了」這個結果。