From my memory, the syntax of pointers really tripped me up. E.g., the difference between * and & in declaration vs dereferencing. I think this is especially confusing for beginners when you add array declarations to the mix.
http://www.ericgiguere.com/articles/reading-c-declarations.h...
I learned this from the book Expert C Programming by Peter van der Linden.