Ho scritto così il tuo main

codice:
    int i, j, k;
	int z1, z2, z3;

    for(i=0;i<m;i++)
    {
        //printf("\t");
        for(j=0;j<n; j++)
        {
            for(k=0;k<p;k++)
            {
				z1 = i*n+j; 
				z2 = i*n+k;
				z3 = m*k+j;
				printf("%d + %d x %d\n", z1, z2, z3);
                *(c + z1) = *(c + z1) + *(a + z2) * *(b + z3);
            }
            //printf("%d ", *(c + z1));
        }
        printf("\n");
    }
per controllare gli indici che utilizzi nelle operazioni di somma/prodotto

Come puoi controllare nel caso di matrici 3x2 e 2x3 gli indici vanno oltre il consentito ...