4° Anno TEORIA 2. Allocazione dinamica della memoria | Page 20

10: Allocazione dinamica della memoria Vers. 9.1 – Ottobre 2025
// Utilizzando il linguaggio C – Array _ Dinamico _ Back
# include < stdio. h > # include < stdlib. h >
int main( int argc, char * argv []) { int * p, * q; int n, i;
/* Check sul numero di elementi possibili dell ' array dinamico */ /* VERA DINAMICITA ': unico limite la quantità di memoria assegnata al TASK */ do { printf("\ nInserisci la dimensione del vettore: "); fflush( stdin); scanf("% d ",& n);
} while( n <= 0);
/* ALLOCAZIONE DINAMICA dell ' array nello heap */ p =( int *) malloc( n * sizeof( int));
if( p!= NULL) { printf("\ nALLOCAZIONE puntatore OK!\ n \ n ");
/* il puntatore q punta all ' ultimo elemento dell ' array dinamico */ q = p +( n-1);
/* Ciclo di caricamento array dinamico cou uso di p PUNTATORE 1 ° ELEMENTO */ printf(" CARICAMENTO Vettore dinamico ATTRAVERSO IL PUNTATORE AL SUO PRIMO ELEMENTO \ n "); for( i = 0; i < n; i ++) { printf(" Elemento del vettore con indice % d ossia *( p +% d) che equivale a p [% d ]: "
, i, i, i); fflush( stdin); scanf("% d ", p + i); }
/* Ciclo di visualizzazione array dinamico cou uso di q PUNTATORE ULTIMO ELEMENTO */ printf("\ nVISUALIZZAZIONE Vettore dinamico ATTRAVERSO IL PUNTATORE AL SUO ULTIMO ELEMENTO "); for( i = 0; i < n; i ++) { printf("\ nIl valore di *( q- % d) che equivale a q [% d ] e ': % d ",
( n-1)-i,( n-1)-i, *( q-i));
} /* Deallocazione area di memoria dimamica */ printf("\ n \ nDEALLOCAZIONE puntatore a vettore OK!"); free( p); /* Per evitare DANGLING REFERENCE */ q = NULL; } else { printf("\ n *** ERRORE: ALLOCAZIONE puntatore a vettore KO!\ n \ n "); }
return 0; }
Autore: Rio Chierego( email: riochierego @ libero. it- sito web: www. riochierego. it) Pag. 20