我在看這本書的下段在C「編程面試攻略」中提到的鏈表棧的實現:鏈表棧用C
typedef struct Element {
struct Element *next;
void *data;
} Element;
void push(Element *stack, void *data);
void *pop(Element *stack);
現在考慮會發生什麼在這些例程中,根據正確的 功能和錯誤處理。兩個操作都會更改列表的第一個 元素。調用例程的堆棧指針必須爲 以修改以反映此更改,但對傳遞給這些函數的指針 所做的任何更改都不會傳播回調用例程的 。您可以通過讓兩個 例程採用指向堆棧的指針來解決此問題。這樣,您可以更改調用例程的指針,以便它繼續指向列表的第一個元素 。實現在 這種變化的結果如下:
void push(Element **stack, void *data);
void *pop(Element **stack);
有人能解釋,在不同的話,爲什麼我們需要在這裏使用一個雙指針?我對所提供的解釋有點不確定。