Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
di funzione
1
Array nelle chiamate di funzioni: Funzionamento del passaggio di
“Sum (I versione)” a[ ] come parametro di sum
1019
Comincia a 1020
#define DIM 15 sommare dal primo 1021
elemento a[0] 1022
void InArray (int[ ], int); • con la chiamata sum(a , 5) viene
int sum (int[ ], int); passato a sum() l’indirizzo di base di 1023
a[1]
a[] (= 1021) 1024
main() 1025
{ a[2]
1026
int a[DIM]; • la chiamata sum(&a[DIM-2] , DIM-2) passa 1027
a[3]
InArray(a, DIM); 1028
a sum() l’indirizzo di
printf (”Somma = %d\n”, sum(a, DIM) ); a[4] 1029
a[DIM-2] (= 1021 + (DIM - 2)* sizeof (int) ) 1030
printf (”Somma dei primi 5 = %d\n”, sum(a, 5) ); 1031
printf (”Somma degli ultimi 2 =%d\n”, sum(&a[DIM-2], 2) ); a[5]
1032
} 1033
Comincia a sommare a[6] 1034
dal penultimo .
elemento .
.
2
Le funzioni della libreria Le funzioni della libreria
standard per l’allocazione standard per l’allocazione
• void * malloc (unsigned int dim_totale) • void free (void *ptr)
– alloca spazio in memoria per dim_totale bytes – se ptr non è null libera la zona di memoria puntata da
– non inizializza la memoria ptr
– in caso di successo restituisce un puntatore di tipo void – se ptr è null non ha nessun effetto
– provoca errore se la memoria puntata da ptr è stata già
che punta allo spazio richiesto; in caso di insuccesso
deallocata
restituisce un puntatore a null
• Esempio:
• Esempio:
int *p; int *p;
p = malloc( 10 * sizeof (int) ); p = calloc( 10, sizeof (int) );
free(p);