Sì, i reference sono nati proprio per questo. Hai le performance derivanti dal passaggio di un solo puntatore tramite registri, ma la garanzia che non sia null enforced lato compilatore. Di contro, non è possibile fare liste e array di reference, proprio perchè non esiste il concetto di reference vuoto da riempire in un secondo momento.