Ciao a tutti.
Come mai questa istruzione
char **vet={"ciao","ciao"};
è errata (initializer for scalar variable requires one element)
mentre questa non da errori
char *vet[]={"ciao","ciao"};
Grazie
Ciao a tutti.
Come mai questa istruzione
char **vet={"ciao","ciao"};
è errata (initializer for scalar variable requires one element)
mentre questa non da errori
char *vet[]={"ciao","ciao"};
Grazie
La prima variabile e' un puntatore ad un puntatore a carattere.
La seconda e' un array di lunghezza non specificata di puntatori a carattere.
Si fa molta confusione ma gli array e i puntatori NON sono la stessa cosa.
char **vet={"ciao","ciao"};
da' errore perche' cerchi di utilizzare un inizializzatore di aggregati con un qualcosa che non e' un aggregato. Un puntatore ad un puntatore contiene un semplice indirizzo di un puntatore. Dentro le {} esistono tanti inizializzatori che non corrispondono a sinistra, ad altrettanti elementi in cui inserirli.
char *vet[]={"ciao","ciao"};
funziona perche' vet e' adesso un array (un aggregato) e quindi l'inizializzatore puo' predisporre ogni suo item, uno per volta. Quello che c'e' tra {} sono tanti validi inizializzatori per ognuno degli elementi dell'array.