& in C
serves two purposes:
- bitwise and (syn: bitand) which combines the bits of two values
using the logical and operation
- the unary address of operator, which gives the memory address of the next item.
- In C++, variables declared with an & at the end of the type are references, which act like dereferenced pointers but have the syntax of normal variables.
Ok, so it serves three purposes in C++.