Pointer is a variable which is taking memory reference of the other variable. It will not store direct value of any variable instead it will store memory address of the particular variable.
Reference is taking address of memory storage of particular variable.
int *p; -- here, p is a pointer variable.
int c = 5; -- here, c is a normal variable.
p = &c; -- here, p is taking memory reference of c.
print("%d",&p); --here, it will display memory address of c;
Also, please find below important links -
Hope, this will clear your doubt.