Sì ovvio perché nel doppio ciclo for di assegnazione e in quello di stampa stai trattando m come se fosse una matrice, cioè un puntatore a puntatore, ma tu lì hai un puntatore a puntatore a puntatore...

Devi modificare così

codice:
	for(i=0;i<r;i++)
		for(j=0;j<c;j++)
			(*m)[i][j] = 0;
per il ciclo di inizializzazione... e praticamente la stessa cosa per la stampa.

Con la notazione a puntatore, questa riga

(*m)[i][j] = 0;

dovrebbe equivalere a

*(*(*x + i) + j);

EDIT: comunque se devi inizializzare tutti gli elementi della matrice a 0 (e non ad altri valori), tanto vale fare l'allocazione dinamica con la calloc() anziché la malloc()...