Array Come Puntatori, Aritmetica Dei Puntatori, Array Multidimensionali, Stringhe - Appunti di Informatica gratis Studenti.it
Controllo utente in corso...

L'appunto sono esercitazioni e relative spiegazioni riguardanti Array come puntatori, Aritmetica dei puntatori, Array multidimensionali, Stringhe.(43pg.pdf) ( formato pdf)

VOTO: stellastellastellastellastellastellastellastella Appunto inviato da cmazzari

Esercitazione 5 Array come puntatori Aritmetica dei puntatori Array multidimensionali Stringhe Array come puntatori Gli array e i puntatori in C sono strettamente correlati. Il nome di un array infatti è un puntatore al suo primo elemento. Più precisamente, il nome di un array è una costante - si noti bene: una costante, non una variabile ! il cui valore è l'indirizzo del primo elemento dell'array. Esempio char tab [100]; char *s; s = & tab [0]; s = tab; */ questi due assegnamenti sono perfettamente equivalenti */ Array come puntatori Così come gli elementi di un array vengono scanditi per mezzo dell'indice, si può accedere agli elementi di un array per mezzo di un puntatore. Esempio: Cosa stampa char tab [100]; char *s; s = tab; tab [7] = a'; printf tab [7] = %cn", tab[7; s+7) = b'; printf tab [7] = %cn", tab[7; Vediamo l'esempio precedente più da vicino. char tab [100]; char *s; s = tab; */ s e tab sono due sinonimi, con la differenza che s è una variabile puntatore a carattere, mentre tab è una costante */ tab [7] = a'; printf tab [7] = %cn", tab[7; s+7) = b'; */ incrementando di 7 il valore di s si ottiene un valore corrispondente all'indirizzo dell'ottavo elemento di tab, al quale si accede per mezzo dell'operatore di dereferenziazione. Dunque, si può far riferimento a tab[7] scrivendo s+7). */ printf tab [7] = %cn", tab[7; Ancora sull'esempio precedente. tab = tab[0] = . tab[99] = s= tab = tab[0] = . tab[7] = a . tab[99] = s= . tab[7] = b . char tab [100]; char *s; s = tab; tab [7] = a'; printf tab [7] = %cn", tab[7; s+7) = b'; printf tab [7] = %cn", tab[7; Inizializzazione di un array Vediamo come si può inizializzare un array in due modi diversi. Primo modo char tab [100]; int i; for (i=0; i 100; i) tab[i] = k'; Secondo modo char tab [100]; char * s; int i; s = tab; for (i=0; i 100; i) *s++ = k'; L'istruzione *s++ = k'; opera nel seguente modo: F copia k nella locazione di memoria puntata da s; F poi incrementa s di un elemento. Attenzione Se per errore avessimo scritto: char tab [100]; char * s; int i; s = tab; for (i=0; i 300; i) *s++ = k'; */ 300 invece di 100 */ il compilatore non avrebbe segnalato alcun errore, ma avremmo avuto problemi in esecuzione perché si sarebbe inizializzata con k una regione di memoria al di là del limite allocato con tab. Aritmetica dei puntatori Gli operatori ammessi per una variabile di tipo puntatore sono: + ++ -- Ma qual'è l'esatto significato dell'incremento o decremento di un puntatore I puntatori non vengono incrementati (o decrementati) come una qualsiasi altra costante numerica. Per esempio, se pc vale 10, dove pc è stato dichiarato: char *pc; non è detto che pc++ valga 11 ! Aritmetica dei puntatori Nell'aritmetica dei puntatori quello che conta è il tipo base. Incrementare di 1 un puntatore significa far saltare il puntatore alla prossima locazione corrispondente a un elemento di memoria il cui tipo coincide con quello base. Esempio int a[10]; char b[10]; int *pi; char *pc; pi = a; pc = b; pi Continua »

vedi tutti gli appunti di informatica »
Carica un appunto Home Appunti
Pagina eseguita in 0.00972700119019 secondi