Intanto nel main() inizializza n a max, altrimenti allochi un array di cui non conosci la dimensione (a seconda del valore dell'int non inizializzato).Originariamente inviato da mame83
codice:void copia(int matrice[max][max],int dim, int *vm) { int i,j,k; vm=(int*)malloc(sizeof(int)*dim*dim); k=0; for(i=0; i<dim; i++) for(j=0; j<dim; j++) { vm[k]=matrice[i][j]; k=k+1; } /*printf("vettore uguale a : \n"); for (i=0; i<dim*dim; i++) printf("%d ",vm[i]); printf("\n");*/ } int main() { int mat[max][max],*vet; int n,i,maggiore; copia(mat,n,vet);/*copiamo matrice nel vettore */ for (i=0; i<n*n; i++) printf("%d ",vet[i]); printf("\n"); system("PAUSE"); }
Poi devi passare alla funzione un puntatore a vet (quindi **vm) perchè altrimenti funzionerebbe cone le normali variabili (anche un puntatore è una variabile come le altre) e verrebbe copiato per valore. Altrimenti puoi passare un reference a puntatore (*&vm) per evitare di dereferenziare il puntatore a puntatore ogni volta.

Rispondi quotando