Well, that kind of invalidates part of the comment I was going to write: "How is this any better than K&R's 'the C programming language'?". I guess it all depends on background and personal preference.
I've never become comfortable with C's pointer/reference/dereference syntax -- I much prefer Pascal in this sense. I recently had a look at Ada and was pleasantly surprised -- it has a very straightforward syntax.
As other's mention here, I think C should be learnt with assembler (and computer architecture - especially the bit about cache hits/misses). I find that:
http://www.drpaulcarter.com/pcasm/
is a great introduction to assembler and C -- and how the two (can) interact.
Another thing I find frustrating with C is that it's still a bit of a pain to work with unicode/wide strings -- on my todo list is writing a short post on "Hellø wørld (with unicode)" -- with some examples of wide strings in C, (possibly Pascal) and ADA -- along with assembler output and a "pure" assembler version.
There is surprisingly little good material on the web for this (that I managed to find, anyway).