Diciamo che il libro ti risulta un po ostico. Se questa è la spiegazione di come funziona un array un po' di cose sono superflue:

1) è inutile fare una malloc (per dieci numeri andare a ottimizzare la gestione dello spazio mi sembra eccessivo). E se questa fosse la parte dinamica del tuo programma non ne vedo l'utilità
2) è inutile usare un fprintf, va benissimo il solo printf.

Allora siccome m diventa un puntatore (che puoi visualizzare come una casella dell'array), prima ti abbassa m di uno (se m puntava 22, ti fa puntare 21) poi fa partire il for con i che parte da 1. Questo comporta il fatto che m non parta da 21, ma da 22.

Quindi il tuo codice sarebbe molto più comodo così:

codice:
#include <stdio.h>
#include <stdlib.h>

int main ()

{ 
	int m[10], i ;

    for(i=0;i<10;i++)
        /*metti quello che vuoi*/
    
    for(i=0;i<10;i++)
        printf("%i", i);

	system ("PAUSE") ;

	return 0 ;
}