Rimangono costanti significa che non cambiano nel corso del programma.
La domanda è: sono inserite all'inizio dall'utente oppure sono note prima di eseguire il programma?
Se sono note a priori puoi dichiarare il tuo vettore sin dall'inizio come vettore costante:
#define M 6
#define N 10
...
int matrice[M][N];
altrimenti devi usare la malloc o sue varianti:
int **matrice;
matrice = (int **)malloc(M*sizeof(int *));
for(i=0; i<M; ++i)
matrice[i] = (int *)malloc(N*sizeof(int));