Added the code.

I think, though I am not certain, that in the end of the program the
pointers fp and fp2 are both pointing (sharing) to where the x value was
stored, and while the value of y is equal to the value of x at the end, y
has a different location in memory.