<p>What is the difference between a pointer variable and a reference variable?</p>

Apart from syntactic sugar, a reference is a
```
const
```
pointer (
not
pointer to a
```
const
```
). You must establish what it refers to when you declare the reference variable, and you cannot change it later.
Update: now that I think about it some more, there is an important difference.
A const pointer's target can be replaced by taking its address and using a const cast.
A reference's target cannot be replaced in any way short of UB.
This should permit the compiler to do more optimization on a reference.