PDA

Visualizza la versione completa : [C] Matrici


darth fener
10-03-2009, 14:54
Come devo fare per passare una matrice ad una funzione? Ho provato a dichiararla come puntatore a puntatore ma non mi funziona...

oregon
10-03-2009, 15:07
Mostra il codice, sia quello in cui allochi la matrice, sia quello in cui la passi alla funzione ... e anche la funzione in questione ...

darth fener
10-03-2009, 15:13
#include <stdio.h>

#define dmax 5

void Matr(int **var);

int main(){
int Matrice[dmax][dmax];
printf("Inserisci matrice: \n");
Matr(Matrice);
getch();
}

void Matr(int **var){
int i,j;
for(i=0;i<dmax;i++)
for(j=0;j<dmax;j++){
printf("Inserisci valore della riga %d colonna %d\n",i+1,j+1);
scanf("%d",&var[j][i]);
}
for(i=0;i<dmax;i++)
for(j=0;j<dmax;j++){
printf("%d\t",var[j][i]);}
}

oregon
10-03-2009, 15:20
#include <stdio.h>

#define DMAX 5

void Matr(int m[][DMAX]);

int main()
{
int Matrice[DMAX][DMAX];
printf("Inserisci matrice: \n");

Matr(Matrice);

return 0;
}

void Matr(int m[][DMAX])
{
int i,j;

for(i=0;i<DMAX;i++)
for(j=0;j<DMAX;j++)
{
printf("Inserisci valore della riga %d colonna %d\n",i+1,j+1);
scanf("%d",&m[j][i]);
}

for(i=0;i<DMAX;i++)
for(j=0;j<DMAX;j++)
printf("%d\t",m[j][i]);
}

darth fener
10-03-2009, 15:23
Ma perchè non posso metterla come puntatore a puntatore?
Io per esempio per un vettore facevo
void Funz(int *vett);
per le matrici
void Funz(int **matr); //perchè non va?

oregon
10-03-2009, 15:32
Se vuoi usare un puntatore a puntatore, devi dichiarare la matrice con

int **Matrice;

e allocarla dinamicamente ...

darth fener
10-03-2009, 15:35
Si ma ad una funzione gli passo una matrice già allocata, quindi perchè non andava il mio programma?

oregon
10-03-2009, 15:41
Perche' la tua matrice e' allocata come una sequenza di interi in memoria.

In memoria quindi non hai una sequenza di puntatori ma una sequenza di interi ... cosa molto diversa.

Loading