ARRAY E PUNTATORI AD ARRAY DI CARATTERI -
DIFFERENZE NELLA GESTIONE DELLE STRINGHE
programma esplicativo:
int
main() {
/*
in questo modo posso inizializzare un array con una stringa, è
possibile farlo solo
* durante la fase di inizializzazione.
* non potremo infatti eseguire un comando di assegnamento analogo,
* (del tipo stringa="ciao"; o stringa=stringa2)
successivamente.
* per assegnare nuovi valori a stringa utilizzeremo la funzione
strcpy
* (es. strcpy(stringa, "nuovocontenuto");)
* importante: essendo stringa definita come array sarà
possibile durante l'esecuzione
* modificare il valore dei suoi elementi (es. stringa[1]='l';)
*/
char
stringa[]="ciao";
/*
in questo modo dichiaro un puntatore a stringa e vi associo la
stringa *costante* "ciao"
* il comando:
*/
char
*stringaptr="ciao";
/*
e' equivalente ai comandi: */
char
*stringaptr;
strptr
= "ciao";
/*
importante: l'ultimo comando è possibili riscriverlo diverese
nel codice per cambiare
* interamente la stringa (equivale a cambiare l'indirizzo contenuto
in strptr) mentre *non*
* e' possibile modificare un solo carattere per volta come avveniva
con l'array di sopra
* questo perchè si tratta di un puntatore a stringa *costante*
* non e' neanche possibile utilizzare:
*/
char
*titolo = {'c', 'i', 'a', 'o', '\0'};
strcpy(titolo,
"ciao");
/*
possiamo pero' accedere in *lettura* al singolo carattere con
l'aritmetica dei puntatori: */
printf("%c",
*(strptr+1));
}
PASSAGGIO DI ARGOMENTI
int
main(int argc, char *argv[])
a.out
pippo caio luigi
passo
4 stringhe (argc = 4) che vanno a memorizzarsi in argv
la prima stringa che
viene memorizzata non è solo il nome dell'eseguibile ma anche
gli eventuali percorsi (C:\ ecc)
|