I programmed in assembly for some time, using pointers without understanding what they were, or that they were called pointers. When I finally got to learning C, the pointer syntax was downright inscrutable, but when I got it, suddenly all of C and all of assembler laid clear before me, all at once. It was a beautiful thing.
I was reminded about this while reading this post from HN. It inspired me to try explaining pointers from the opposite direction. Instead of trying to teach pointers via C syntax, let me try to start with pointers outside of programming, then discuss them in relation to C and PHP.