Cでのリンクリストスタックの実装に関連して、「ProgrammingInterviewsExposed」という本の次の段落を見ています。
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);
誰かが別の言葉で、なぜここでダブルポインタを使用する必要があるのか説明できますか?提供された説明については少しわかりません。