OK, that covers the difference(s) between pointers and references. Now, why was reference created at all? What was the need when pointer was already there?
Mr. Bjarne Stroustrup introduced references in C++ to support operator overloading. Consider the following code fragment for subtracting 2 objects and storing it in 3rd:
a = &b - &c;
where a, b and c are the objects with an overloaded '-' operator. Isn't the syntax 'un-natural'? To make it more natural he have introduced references. With references in place, the above line becomes:
a = b - c;
Simple, isn't it? :)
Another thing that comes to my mind apart from this is, how ugly the copy constructors would have been without the presence of references.
Another reason I love C++ !!