Originariamente inviato da MItaly
Un qualcosa che può stare sul lato sinistro di un'espressione di assegnamento, in genere un valore dotato di un indirizzo di memoria. Una variabile o un reference ad essa, ad esempio, sono lvalue, mentre il valore temporaneo restituito da un'espressione (ad esempio 5+4) non lo è. Ovviamente l'operatore & si può applicare solo a lvalue, dato che non ha senso cercare di ottenere l'indirizzo di qualcosa che non ha un indirizzo ( &(5+4) non ha senso).
Ho capito grazie
E grazie anche a RooccoXXI.

Riepilogando, se non voglio che il valore della variabile passata alla funzione venga modificato, uso l'operatore '&' (che, se ho capito bene, equivale nel pascal al non mettere la parola var); altrimenti passo semplicemente il nome della variabile in facondi in modo che le eventuali modifiche ad essa restino permanenti a livello globale (la parola var nel pascal).

La storia del const non è proprio chiarissima invece. Credevo che per dichiarare le costanti in C/C++ si usasse #define (es. #define N 5); const che fa di preciso?