It's a bit dated (it hasn't been updated since 2005), but apart from that I'll say that
parts of it are excellent.
In particular, section 6 is the best resource I know of for explaining the often counterintuitive relationship between arrays and pointers.