Array e malloc
Maurizio Paolini
paolini a dmf.bs.unicatt.it
Mar 7 Maggio 2002 16:16:09 UTC
> From: Carlo Mor <jenawork a iol.it>
> Subject: Re: Array e malloc
>
>
> Maurizio Paolini wrote:
>
> >No. Attenzione che in C gli array a piu' di una dimensione hanno comunque
> >un solo livello di indirezione, ovvero "jolly" e' in sostanza un puntatore
> >a una "struct orso". Quindi "struct orso *jolly".
> >
> Sei sicuro?
> Guarda che un array di array e' consentito ed ha doppia indirezione
> pensa al classico
> int main (int argc, char **argv)
Beh, quella e' una cosa diversa. Comunque ho fatto una veloce prova e
devo darti ragione! E mi spiego anche il motivo del mio errore.
Devo ringraziare gli intervenuti, poiche' ora mi sono chiarito un grosso
dubbio che avevo.
Comunque, tornando in tema, se ho una matrice a due indici:
int a[10][10];
questa puo' essere alternativamente dichiarata con
int **a;
e poi allocata con a = (int **) malloc (10*10*sizeof(int));
salvo che poi il compilatore non sa come raggiungere l'elemento (i,j)
poiche' gli manca la lunghezza della riga.
Suggerisco di provare il seguente codice:
int a[10][10];
a[0][0] = 99;
printf ("%d %d %d\n, a, *a, **a);
Il risultato e' interessante!
mp
>
> >
> >Deve essere allocata con qualcosa del tipo:
> >
> > jolly= (struct orso *) malloc (dim1*dim2*dim3*sizeof(struct orso));
> >
> >dove dim1, dim2, dim3 sono i tre valori massimi dei 3 indici.
> >(Pero' stai attento, e' pericoloso avventurarsi con le matrici a piu' indici:
> >e' facile sbagliarsi)
> >
> Il modo piu' efficiente e' quello proposto da Bauno, che effettivamente
> uso anch'io in C++ e che e' velocissimo
> (array monodimensionale di dimensione pari al prodotto delle dimensioni)
>
> >
> >mp
> >
> >>Carlo
> >>
> >
Maggiori informazioni sulla lista
Lug
|