& 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++.