Let's cut to the chase here.
References are in C++ to avoid a copy when an object is passed by value.
Why do that? Because in C if you want to use the original object you have to pass the address of that object. Then in the function you have to de-reference that pointer to update the original object. These are places for error and all of this is avoided by having a call-by-value that does not make a copy.
Therefore, examine your function. If the function never changes the the address of the object used on the call, then in C++ you pass by reference. Only when the function changes the address of the original object do you need to pass by pointer.
In effect, a reference eliminates ALL functions with pointer arguments replacing them with reference arguments. Now I understand to make this work, the compiler uses a pointer. The difference it the compiler ain't gonna screw up.