In C++, references are implicit pointers. Basically, when passing a reference, the receiving function has only a copy of the value in the address passed. The value in the original function cannot be manipulated by anything but its originating function. So it's like a "safer" but less versatile pointer. If you want a detailed read on when to use which, try this.
In C, there are only pointers.
In Java, there are only references.
In C, there are only pointers.
In Java, there are only references.