Home What are the differences between a pointer variable and a reference variable in C++?

# What are the differences between a pointer variable and a reference variable in C++?

user11221
1#
user11221 Published in September 19, 2018, 3:21 am

I know references are syntactic sugar, so code is easier to read and write.

But what are the differences?

1. A pointer can be re-assigned any number of times while a reference cannot be re-assigned after binding.
2. Pointers can point nowhere (NULL), whereas a reference always refers to an object.
3. You can't take the address of a reference like you can with pointers.
4. There's no "reference arithmetic" (but you can take the address of an object pointed by a reference and do pointer arithmetic on it as in &obj + 5).

To clarify a misconception:

The C++ standard is very careful to avoid dictating how a compiler may implement references, but every C++ compiler implements references as pointers. That is, a declaration such as:

int &ri = i;


if it's not optimized away entirely, allocates the same amount of storage as a pointer, and places the address of i into that storage.

So, a pointer and a reference both use the same amount of memory.

As a general rule,

• Use references in function parameters and return types to provide useful and self-documenting interfaces.
• Use pointers for implementing algorithms and data structures.

• My all-time favorite C++ FAQ lite.
• References vs. Pointers.
• An Introduction to References.
• References and const.
• I think point 2 should be "A pointer is allowed to be NULL but a reference is not. Only malformed code can create a NULL reference and its behavior is undefined." – Mark Ransom Oct 8 '10 at 17:21
• Pointers are just another type of object, and like any object in C++, they can be a variable. References on the other hand are never objects, only variables. – Kerrek SB Jun 16 '12 at 10:14
• This compiles without warnings: int &x = *(int*)0; on gcc. Reference can indeed point to NULL. – Calmarius Aug 13 '12 at 9:00
• reference is a variable alias – Khaled.K Dec 23 '13 at 8:53
• I like how the very first sentence is a total fallacy. References have their own semantics. – Lightness Races in Orbit Jun 1 '14 at 1:58