When working with pointers, the pointer arithmetic is quite important. Colin Walls, from Mentor, wrote a nice, short article on why and when to store addresses in pointer variables and when to store them in a regular variable. Read more in here: Using an unsigned integer to store a pointer in C