Reference is the other name given to the same variable. Pointer is new variable created which can contain address of another variable.

Try an experiment

Code:
# include<iostream>
using namespace std;
int main()
{

int i = 90; // variable
int &j = i;  // reference 
int *P;   //  pointer
P =&i;

cout<<endl<< "address of variable :i" <<&i;

cout<< endl << "address of reference: j" <<&j;
cout<<endl<<"address of pointer : P"<<&P;
return 0;
}
OUTPUT:
 address of variable i: i0012FEDC
address of reference j: 0012FEDC
address of pointer p: 0012FEE0
so you see the address of i and reference j is same , address of pointer P is different.