La cosa funziona per quasiasi oggetto, ma non con i tipo base (es. integer, string, ecc.).
Qualsiasi modifica all'oggetto viene riportata alla funzione chiamante, e questo perchè l'oggetto viene passato per riferimento, ovvero viene passato il suo indirizzo in memoria, e non il suo valore.
Fare però attenzione ad un particolare: mai sostituire l'oggetto passato con altro, in questo caso si perderebbe traccia dell'indirizzo di memoria dell'oggetto originale, sostituito con altro indirizzo. Purtroppo la funzione chiamante non sà che questo è cambiato, rimanendo puntata sull'indirizzo precedente...