Zeiger als Funktionsargumente in C

Wenn ich diesen Code hätte, zum Beispiel:

int num = 5;
int *ptr = #

Was ist der Unterschied zwischen den folgenden beiden Funktionen?

void func(int **foo);
void func(int *foo); 

Wo ich die Funktion aufrufe:

func(&ptr); 

Mir ist klar, dass der erste von beiden einen Zeiger auf einen Zeiger als Parameter nimmt, während der zweite nur einen Zeiger nimmt.

Wenn ich vorbeigehefunc(&ptr)Ich übergebe effektiv einen Zeiger. Welchen Unterschied macht es, dass der Zeiger auf einen anderen Zeiger zeigt?

Ich glaube, letzteres wird eine Inkompatibilitätswarnung auslösen, aber es scheint, dass die Details keine Rolle spielen, solange Sie wissen, was Sie tun. Aus Gründen der Lesbarkeit und des Verständnisses ist Ersteres vielleicht eine bessere Option (2-Sterne-Zeiger), aber was ist der Unterschied von einem logischen Standpunkt aus?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage