PDA

Visualizza la versione completa : [C] Array di stringhe e puntatori


davidinho
03-11-2011, 17:57
ciao
mi stavo esercitando con il C e mi sono imbattuto in un esercizio nel quale dovevo gestire un array di stringhe, inizialmente mi sono limitato ad inizializzarlo cosi:

char A[4][]={"cuori", "picche", "quadri", "fiori"};
però mi veniva restituito l'errore

error: array type has incomplete element type

allora ho cercato su internet quale fosse l'errore e ho trovato che in realtà dovrei inizializzarlo cosi:

char *A[]={"cuori", "picche", "quadri", "fiori"};
ed in effetti cosi funge, però non riesco a capire, creando l'array cosi andrei ad indicare al compilatore che il secondo indice dell'array è un puntatore giusto?
ma ogni posizione di un array non è già di default un puntatore?

oregon
03-11-2011, 18:36
In realtà la prima forma è sbagliata perché devi indicare la lunghezza massima delle stringhe nel secondo indice


char A[][8]={"cuori", "picche", "quadri", "fiori"};

e non il numero di stringhe nel primo ...

davidinho
03-11-2011, 18:39
ma usando invece la seconda forma da me indicata, quella con * le stringhe potrebbero essere di una qualsiasi lunghezza giusto?

oregon
03-11-2011, 19:53
Non sono la "stessa cosa" ...

Se usi la forma con i puntatori stai creando un vettore di puntatori a stringhe costanti. In pratica crei un elenco di 4 indirizzi a delle stringhe che verranno memorizzate nel "testo" del tuo eseguibile e che *non* potrai modificare. Se ti servono come costanti, va benissimo.

Se usi la forma che ti ho indicato, hai creato un array di char (un elenco di stringhe) che potrai modificare (ovviamente nel limite della loro lunghezza massima).

Loading