Riferimento
Accesso indiretto a un valore: invece del valore stesso si ha un puntatore o un handle. Permette a più variabili di condividere lo stesso oggetto sottostante.
Si distingue dal puntatore: il riferimento è spesso «non nullo» e dereferenziato automaticamente (Java, C#, JS, Python, Rust). Il puntatore (C, C++) può essere NULL e va dereferenziato esplicitamente. Passaggio per riferimento o per valore: cambia ciò che accade quando si passa un argomento a una funzione. Il borrow checker di Rust controlla i riferimenti in modo rigoroso (uno mutabile OPPURE molti immutabili). Il «reference counting» è una forma di GC (Swift, CPython).