Allocazione dinamica in C
Bauno
bauno a inwind.it
Mer 29 Dic 2004 13:16:13 UTC
On Wednesday 29 December 2004 12:39, Nicola wrote:
> Qualcuno mi sa dire come si fa in C ad allocare dinamicamente un array
> bidimensionale [n][m]?
Crei un vettore di n int* (righe), e poi allochi dinamicamente le colonne...
int **P;
p=malloc(n*sizeof(int*));
for (int i = 0; i < n ; i++)
p[i]=malloc(m*sizeof(int));
> In rete trovo solo esempi che mi allocano dinamicamente vettori
> monodimensionali [n]:
Può dipendere dal fatto che, in genere, si tende ad allocare vettori
n-dimensionali come un vettore mono-dimensionale, per poi accedere ai loro
elementi "come se fossero matrici"...
Nel tuo caso ad esempio potresti fare una cosa del genere:
int *p;
p=malloc(n*m*sizeof(int));
Poi invece di p[i][j] usi:
*(p+m*i+j)
Il primo modo è + semplice da maneggiare, il secondo è prestazionalmente +
favorevole.
> Con l'allocazione dinamica si può allocare tutta la ram che si vuole,
Beh, cerca di non esagerare...;)
--
Bauno - Eurydices, oro, properata retexite fata!
God is real, unless declared integer
Maggiori informazioni sulla lista
Lug
|