Pointers and references can be a little tricky but let me see if I can make it easier to understand. Pointers literally point to a memory location with the use of the reference operator which is the and symbol &.
int *ip; // Integer pointer
int j; // Declared Integer Variable
int var1 = 25; // Integer variable assigned the value of 25.
ip = &var1; // Integer Pointer now equals the ADDRESS of variable 1.
j = *ip; // j now equals the contents of IP. Meaning j now equals 25.
When you reference something that means you’re going to that address directly. As opposed to passing by value which creates a copy. Passing by reference does NOT create a copy.