When a variable is cast into a different type, the actual variable is not harmed. Here is a snippet from the program currently being examined in the tutorial:
2:void somefunc(unsigned int fptr)
3:{
4: *(float*)fptr=99.9;
5:}
Try adding this statement between lines (4) and (5):
printf("%d\n", fptr);
std::cout << fptr << std::endl;
This line just prints fptr to the screen.
But the point is, that fptr is printed to the
screen as an unsigned int. Even though
ftpr was cast into a float* in
line 4, fptr was not permanently transformed into
a float*.
Casting merely changes the way the compiler uses the variable at the point where the cast is made.