Perché viene argv
dichiarato come "un puntatore al puntatore al primo indice dell'array", anziché essere semplicemente "un puntatore al primo indice dell'array" ( char* argv
)?
Perché qui è richiesta la nozione di "puntatore a puntatore"?
char* argv[]
mette lo spazio nel posto sbagliato. Dì char *argv[]
, e ora è chiaro che questo significa "l'espressione *argv[n]
è una variabile di tipo char
". Non lasciarti sorprendere dal tentativo di capire cos'è un puntatore, cos'è un puntatore a un puntatore e così via. La dichiarazione ti dice quali operazioni puoi eseguire su questa cosa.
char * argv[]
con il costrutto C ++ simile std::string argv[]
e potrebbe essere più semplice analizzarlo. ... Non iniziare a scriverlo in quel modo!
char &func(int);
che non &func(5)
ha tipo char
.
char* argv[]
ochar**
. Questo è un puntatore a un puntatore a un personaggio; in particolare il puntatore esterno punta al primo puntatore in un array, mentre i puntatori interni puntano ai primi caratteri delle stringhe nul-terminate. Non ci sono indici coinvolti qui.