¿Por qué se argv
declara como "un puntero al puntero al primer índice de la matriz", en lugar de ser simplemente "un puntero al primer índice de la matriz" ( char* argv
)?
¿Por qué se requiere la noción de "puntero a puntero" aquí?
char* argv[]
pone el espacio en el lugar equivocado. Digamos char *argv[]
, y ahora está claro que esto significa "la expresión *argv[n]
es una variable de tipo char
". No se deje atrapar por tratar de averiguar qué es un puntero y qué es un puntero a un puntero, y así sucesivamente. La declaración le dice qué operaciones puede realizar en esta cosa.
char * argv[]
con la construcción similar de C ++ std::string argv[]
, y podría ser más fácil de analizar. ... ¡Simplemente no empieces a escribirlo de esa manera!
char &func(int);
lo que no hace que &func(5)
tenga tipo char
.
char* argv[]
ochar**
. Eso es un puntero a un puntero a un personaje; específicamente el puntero externo apunta al primer puntero en una matriz, y los punteros internos apuntan a los primeros caracteres de cadenas terminadas en nulo. No hay índices involucrados aquí.