"Understanding and using C pointers" by Richard M. Reese