void fa(int i)
i = 99; // i is a local copy
void fb(int &i)
i = 99; // i is a reference
int number = 1;
std::clog << "after fa(): " << number << '\n';
std::clog<< "after fb(): " << number << '\n';
In your case, you pass a pointer by reference. The effect is the same as in the number example. The value of the pointer (a memory address: a number) can be changed in the function and the changes will be visible outside the function.
The confusion is because & is also used as the address-of operator, which gets the address of something.