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");
}
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).
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.