I have never understood what was so confusing about the concept of pointers. What I can see as confusing though is the way C's syntax works with declaring multiple levels of pointer indirection with arrays mixed in, although that can be mitigated with the use of typedefs.