È un riferimento a un puntatore a un int. Ciò significa che la funzione in questione può modificare sia il puntatore che l'int stesso.
Si può solo passa un puntatore, quella complicazione è che il puntatore deve essere un l-value, non solo un valore di R, così per esempio
int myint;
function(&myint);
sola
non è sufficiente e né lo 0/NULL è ammissibile, dove:
int myint;
int *myintptr = &myint;
function(myintptr);
sarebbe accettabile. Quando la funzione ritorna, è del tutto possibile che myintptr
non punti più a ciò a cui inizialmente puntava.
int *myintptr = NULL;
function(myintptr);
potrebbe anche avere senso se la funzione era in attesa di allocare la memoria quando viene fornito un puntatore NULL. Controlla la documentazione fornita con la funzione (o leggi la fonte!) Per vedere come il puntatore dovrebbe essere usato.
Tale errore è a causa della esattamente quello che stavo parlando con "deve essere un valore di l, non solo un valore di r". La regola in questione è "non è possibile associare un riferimento temporaneo a un riferimento non const", il risultato dell'operatore & "address of" è temporaneo. – Flexo