semplicemente perchè passandogli anche una lunghezza buffer non ha bisogno di un indirizzo di memorie ma di uno spazio fisico dove scrivere se infatti prima non riempi la variabile la funzione crea problemi
in più la funzione si protegge dall'invio a un indirizzo di memoria ad essa non raggiungibile
infatti se esiste la stringa è sicura che l'area di memoria che le serve per produrre un risultato è sufficiente ed è raggiungibile