A pointer variable in C++ is a variable that holds the memory address of another variable whereas the reference is an alias for an already existing variable.
Pointers dereferenced with a * whereas references can be used simply, by name.
A pointer can be changed to point to any variable of the same type whereas a reference if once initialized to a variable, it cannot be changed to refer to a variable object.
A pointer can be assigned to point to a NULL value whereas a reference cannot be NULL.