A reference is an alternate name for an existing variable. Create int& ref = x and ref becomes another name for x. Operations on ref operate on x. References must be initialized when declared and can't be changed to refer to something else.
Once bound, ref always means x. Pointers can be reassigned. I'll show why references feel more natural for many tasks. They look like regular variables but let you modify original data.