Estratto del documento

Puntatori e array monodimensionali

La differenza fondamentale tra puntatori e vettori è che i puntatori sono variabili che contengono un indirizzo che può essere cambiato per puntare ad un’area di memoria diversa; mentre per i vettori (nonostante il loro nome sia trattato come un puntatore dal compilatore) all’inizio del vettore stesso, non esiste una variabile in cui è contenuto l’indirizzo della prima locazione del vettore e quindi questo indirizzo non può essere modificato (sarà quindi costante).

Nei vettori

Ad esempio, in un vettore “vet”, &vet è l’indirizzo che punta all’inizio del vettore stesso ovvero è l’indirizzo del primo elemento del vettore; le seguenti espressioni, ad esempio, indicano tutte la stessa cosa: vet, &vet[0], &vet [0]

Immagino adesso di avere un vettore “str” di 100 caratteri:

char str[100];
char *p;

p = str; (oppure &str[0] oppure &str)

L’assegnamento significa che al puntatore p viene assegnato l’indirizzo della prima locazione di memoria del vettore. Da questo momento potremo accedere ai dati del vettore sia tramite str sia tramite p esattamente negli stessi modi:

  • Indicizzazione tra parentesi quadre
  • Tramite l’aritmetica dei puntatori

Ad esempio, str[10], *(str+10), p[10], *(p+10) sono tutti i modi per accedere alla 11-esima posizione del vettore str.

La funzione strcpy

strcpy è una funzione definita in <string.h> che copia una stringa da una locazione ad un’altra:

char *strcpy(char *destinazione, const char *sorgente);

Poiché le stringhe sono vettori di caratteri, ovviamente non si può utilizzare l’operatore “=”. Le possibili soluzioni sono due:

  • Copiare elemento per elemento dalla stringa sorgente alla stringa destinazione fino a quando si incontra il carattere fine stringa (\0)
  • Utilizzare strcpy

La sintassi della funzione è: strcpy(destinazione, sorgente)!! È importante verificare e assicurarsi che destinazione >= sorgente

Esempio di utilizzo della funzione strcpy()

char sorgente[] = "STRINGA";
char destinazione[100];
printf("sorgente = %s", sorgente);
strcpy(destinazione, sorgente);
printf("destinazione = %s", destinazione);

Come verificare che la stringa destinazione sia abbastanza grande per copiare la stringa sorgente? Tramite un confronto tra stringhe utilizzando la...

Anteprima
Vedrai una selezione di 1 pagina su 2
Puntatory e array- programmazione in C Pag. 1
1 su 2
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Susanna.mm di informazioni apprese con la frequenza delle lezioni di Informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università del Salento o del prof Epicoco Italo.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community