Oppure

Loading
31/07/12 22:45
web_pirate
Ragazzi, per allocare in memoria attraverso malloc() una matrice a due dimensioni va bene questo metodo oppure mi potrebbe dare delle seccature?
float **ar;

void allocc(int x, int y){
int i;

ar=malloc(x*sizeof(float));
for(i=0;i<x;i++){
	ar[i]=malloc(y*sizeof(float*));
}
}
aaa
01/08/12 6:45
dmr
Si va bene.
Ultima modifica effettuata da dmr 01/08/12 6:45
aaa
01/08/12 17:44
web_pirate
Ok. Però vorrei togliermi un dubbio. Si può fare in modo che sia la funzione, in questo caso allocc(), a prendere come parametro il nome del puntatore e quindi poter utilizzare la stessa funzione per dichiarare più matrici con nomi diversi?
aaa
01/08/12 18:53
dmr
Si basta che fai:
float **allocc(int x,int y)
{
  float **matrice;
  int i;
  matrice=malloc(x*sizeof(float)); // da qui inizia l'allocazione
  for(i=0;i<x;i++)
  {
    matrice[i]=malloc(y*sizeof(float));
  }
  return matrice; // ritorna il puntatore
}

La funzione ritorna un puntatore alla matrice allocata.
Nel main la chiami cosi:
float **matrice;
matrice=allocc(10,22);
Ultima modifica effettuata da dmr 01/08/12 19:14
aaa
02/08/12 0:36
web_pirate
Ah ok, grazie. Pensavo che essendo un doppio puntatore avrei dovuto trattarlo diversamente da un semplice puntatore...
aaa