If we have this code:
int foo=100;
int& reference = foo;
int* pointer = &reference;
There\'s no actual binary difference in the ref
Just to amplify, while it might be true that references are the same as pointers under the hood on nearly all compilers, it is a serious mistake to depend on that behavior. Not only is it likely to bite you on the ass when you least expect it, but it's also incorrect use of references. If it's a pointer you need, use a pointer.
There is absolutely nothing reliable about the relationship between C++ code and what machine code a compiler generates.
Some people say "in my experience ... etc. etc. etc." but this is more unreliable than you may realize. Not many people have actual experience in any substantial cross-section of all the possible compiler/architecture combinations. [Edit: I think that Crashworks proves me wrong though. :-)]
Consider the following list of C++ compilers:
Now multiply this list by the following short list of machine architectures:
Now multiply by operating system and optimization flags, and you may find that everyone's experience is woefully lacking.
Pointers and references have different semantics in C++, but the code generated is the same.
Theoretically, they could be implemented in different ways.
In practice, every compiler I've seen compiles pointers and references to the same machine code. The distinction is entirely at the language level.
But, like cdiggins says, you shouldn't depend on that generalization until you've verified it's true for your compiler and platform.