Warum wird es argv
als "Zeiger auf Zeiger auf den ersten Index des Arrays" deklariert, anstatt nur "Zeiger auf den ersten Index des Arrays" ( char* argv
) zu sein?
Warum ist hier der Begriff "Zeiger auf Zeiger" erforderlich?
char* argv[]
setzt den Raum an der falschen Stelle. Sagen wir char *argv[]
, und jetzt ist klar, dass dies "der Ausdruck *argv[n]
ist eine Variable vom Typ char
" bedeutet. Lassen Sie sich nicht darauf ein, herauszufinden, was ein Zeiger und was ein Zeiger auf einen Zeiger ist und so weiter. Die Deklaration sagt Ihnen, welche Operationen Sie mit diesem Ding ausführen können.
char * argv[]
mit dem ähnlichen C ++ - Konstrukt std::string argv[]
, und es könnte einfacher sein, es zu analysieren. ... Schreib es einfach nicht so!
char &func(int);
was keinen &func(5)
Typ hat char
.
char* argv[]
oderchar**
. Das ist ein Zeiger auf einen Zeiger auf einen Charakter; Insbesondere zeigt der äußere Zeiger auf den ersten Zeiger in einem Array, und die inneren Zeiger zeigen auf die ersten Zeichen von Zeichenfolgen mit Nullen. Hier sind keine Indizes beteiligt.