Nell'esempio che hai fatto te il tempo è +o- uguale...
Dichiarando una variabile "int a" il suo valore è dato da "a" il suo indirizzo è dato da "&a".
Dichiarando una variabile "int *a", il suo valore è dato da "*a" il suo indirizzo è dato da "a" (naturalmente va allocata la memoria).
Un esempio molto semplice può essere quello di un vettore
int a[10];
Se ad esempio vuoi passarlo ad una funzione scriverai Funzione(a)
perché in questo modo passerai l'indirizzo della prima cella di memoria.
Volendo invece passare un valore farai Funzione(a[Indice]).
a[Indice] corrisponde al valore della cella di memoria puntata da "a" più Indice celle.
int a[10]; si potrebbe scrivere quindi come int *a;
a sarà quindi un puntatore ad una cella di memoria e, allocando una cella sola, si avrà una variabile come "int a", allocando più celle si avrà un vettore.
PS: Naturalmente c'è una diversa gestione della memoria in base alle due dichiarazioni ma per adesso non interessa.
|