dimenticavo di aggiungere (davo per scontato ed ho sbagliato) che char *a inizializza una "stringa" (+ correttamente dichiara un puntatore ad una stringa) che poi potrai inizializzare con una qualsiasi lunghezza a tua scelta, ma analogamente potevo scrivere char a[50] ma questo creava una stringa di esattamente 50 caratteri

se non avete ancora fatto i puntatori ti basti sapere che e' praticamente identico all'uso dell'array a parte il fatto che non puoi chiaramente richiamare un carattere della stringa con a[5], ma dovrai utilizzare *a++ per scorrere tra i caratteri. se ti interessa capire meglio guarda la guida di C su questo sito che e' molto buona e facilmente comprensibile