Was macht ** in C-Sprache [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Zeiger zur Zeigerklärung 16 AntwortenWie funktioniert der Zeiger auf Zeiger in C? 14 answers

Ich bin neu in C mit einem guten Hintergrund in Java und ich versuche, Zeiger und Arrays zu verstehen.

Ich weiß, dass tiefgestelltoperator[] ist Teil einer Array-Definition, also:

int numbers[] = {1,3,4,5};

would ein ganzzahliges Array erstellen, das im Speicher als 16 Bytes, 4 Lots von 4 Bytes dargestellt wird:

numbers[0] = 1, address 0061FF1C
numbers[1] = 3, address 0061FF20
numbers[2] = 4, address 0061FF24
numbers[3] = 5, address 0061FF28

Wenn es jedoch um Zeiger geht, wird mein Wissen immer schlechter. Wenn ich also einen Zeiger auf die Array-Nummern erstellen würde, würde ich Folgendes tun:

int *pNumbers = &numbers[0];

was so aussehen würde:

Und ich vermute, es würde eine Größe von 4 Bytes haben?

Jedoch das** Ich lese als "Zeiger auf einen Zeiger" was für mich keinen Sinn macht, warum sollte jemand einen Zeiger auf einen Zeiger wollen, wenn sicher a-> b-> c dann a-> c ausreichen würde? Ich weiß, ich vermisse etwas, und es muss etwas mit Arrays wie @ zu tun habargv kann vom Typ @ sechar[ ] oderchar ** wie unten gesehen:

int main(int argc, char **argv){}

So

Was ist das **)?was nutzt es?wie wird es im Speicher dargestellt?

Antworten auf die Frage(28)

Ihre Antwort auf die Frage