This item was added on: 2003/03/13
It depends on what is meant by &. Since C++ makes use of overloaded built in operators, & can either take the address of an object, perform a bitwise AND operation, do anything related to a user defined type if overloaded by that type, or create a reference. In the context of this question, I'll assume a reference is meant.
A reference is an alternative name for an object, a synonym that refers to the same location in memory, but has a different name. The biggest difference between a pointer and a reference is that a reference need not be dereferenced.
Example of a reference:
int i = 1;
int& r = i;
r = 2;
A pointer on the other hand, is a separate variable that contains a memory address as its value, that memory address can be dereferenced, or followed, to reach the contents of that memory address. The functionality of pointers are very similar to that of references:
int i = 1;
int *p = &i;
*p = 2
The biggest difference between references and pointers is that pointers may be treated like any other variable, operations can be performed on the pointer itself:
char *p = "Test";
References cannot have operations performed on them since they are not variables, they are synonyms for the referred object and any operations will act on that object, not the reference.