Yes, this is the best analogy so far.
A pointer is just like a normal variable, but it's contents, instead of a value that you can normally use in your program, are a memory address of, let's say another variable.
If the memory at that address has been deallocated, then your pointer still exists, but it does not point to anything( anything valid ).
So it is no magic going on here. It's a about understanding what a pointer really is.
Regards
Bookmarks