Come devo fare per passare una matrice ad una funzione? Ho provato a dichiararla come puntatore a puntatore ma non mi funziona...
Come devo fare per passare una matrice ad una funzione? Ho provato a dichiararla come puntatore a puntatore ma non mi funziona...
Mostra il codice, sia quello in cui allochi la matrice, sia quello in cui la passi alla funzione ... e anche la funzione in questione ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
codice:#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]);} }
codice:#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]); }
No MP tecnici (non rispondo nemmeno!), usa il forum.
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?
Se vuoi usare un puntatore a puntatore, devi dichiarare la matrice con
int **Matrice;
e allocarla dinamicamente ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
Si ma ad una funzione gli passo una matrice già allocata, quindi perchè non andava il mio programma?
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.
No MP tecnici (non rispondo nemmeno!), usa il forum.