Per quanto riguarda il syntax error, credo che "if stream" vada scritto senza lo spazio (ifstream è un tipo di dato, che indica uno stream di input basato su file).
La faccenda della & mi è abbastanza nuova, ma è piuttosto accattivante. Trovi qualcosa a propositoqui.
Praticamente, in C++ esistono i "riferimenti", che sostituiscono i puntatori, ma permettono di fare cose molto più interessanti (o meglio, terrificanti! VVoVe: ). Ad esempio, supponendo di creare una variabile intera accessibile tramite puntatore,

Nel tuo caso, le due righe dovrebbero essere equivalenti a
codice:
int n = 33;
int *r = &n;
codice:
int n = 33;
int& r = n;
//r si può trattare praticamente come un int
r = 44;
//ora anche n = 44  :oVVoVe: